首页 > 其他分享 >从0开始搭建一个微服务项(并注册到nacos)

从0开始搭建一个微服务项(并注册到nacos)

时间:2023-05-03 13:33:20浏览次数:40  
标签:goods 注册 spring nacos pom 模块 yml cloud 搭建

本文发布时间:2023-05-03

本文旨在分享开始一个微服务项目时结构的搭建过程,只提供一种微服务项目的结构,并不涉及具体的业务逻辑。

尚在学习当中,如有不足,请指正!!!

项目架构

创建模块

父工程模块——cloud-parent

一个微服务项目最好有一个父工程模块,用来对整个项目的依赖统一管理

在我的demo中对其命名为cloud-parent,创建好这个模块后,删除除pom.xml之外的文件。

pom.xml中代码

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.ailj</groupId>
    <artifactId>cloud-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>cloud-parent</name>
    <description>cloud-parent</description>
<!--    父工程打包方式为pom-->
    <packaging>pom</packaging>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!--        版本最好和此一致,否则会有兼容性问题,此处版本经测试确保可用-->
        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
        <spring-cloud.version>Hoxton.SR9</spring-cloud.version>
        <spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>
    </properties>
    
<!--    使用dependencyManagement统一依赖管理-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement
</project>

微服务模块——cloud-goods

此模块为商品服务的父模块,继承cloud-parent模块,也包括cloud-goods-api等子模块。

创建模块后,只保留pom.xml文件

pom.xml中代码

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>cloud-goods</artifactId>

    <parent>
        <groupId>com.ailj</groupId>
        <artifactId>cloud-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
<!--        指定父模块pom.xml路径,默认为../pom.xml,即父工程的pom.xml文件位于当前目录下-->
<!--        此处cloud-parent和cloud-goods同属于一个目录,所以需指定路径-->
        <relativePath>../cloud-parent/pom.xml</relativePath>
    </parent>
<!--    父工程模块打包方式为pom-->
    <packaging>pom</packaging>

    <modules>
        <module>cloud-goods-api</module>
    </modules>

</project>

relativePath标签通俗的解释:如果子工程在父工程文件夹下,则可以不加;若子工程和父工程同级或位于其他路径,则需要加此标签指定路径。

微服务子模块——cloud-goods-api

cloud-goods-api模块是商品微服务的一个子模块,在cloud-goods模块中也可包含其他如service、model模块,此处只创建一个api模块以作示例。

cloud-goods-api模块相当于单体项目中的controller层,所以目录结构需保留。

pom.xml中代码

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.ailj</groupId>
        <artifactId>cloud-goods</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>cloud-goods-api</artifactId>
    <dependencies>
        <!--cloud的基础环境包-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
<!--        nacos服务发现-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        
    </dependencies>
</project>

还是要提醒依赖版本问题,否则会有一大堆问题出现(来自某个被折磨一下午的**的忠告)

创建bootstrap.yml文件

首先简要介绍bootstrap.yml和applicatin.yml的区别:

  1. bootstrap.yml先加载,application.yml后加载

  2. bootstrap.yml由spring cloud上下文配置加载,application.yml由spring boot配置加载

  3. bootstrap.yml配置系统信息,如服务地址,application.yml配置应用信息,如自定义参数

具体信息可自行百度

bootstrap.yml文件中代码

server:
  port: 9000	#端口号,可自定义
spring:
  cloud:
    nacos:
      server-addr: {自己的nacosip地址}
      discovery:
        namespace: {自己的nacos命名空间}
        group: {自己的组名}	#通常用于区分项目
  application:
    name: goods-api	#服务名称
  profiles:
    active: dev	#运行环境(开发环境)

其他

启动类中不需要配置其他注解,在bootstrap.yml中指定了地址就可以注册到nacos。

最后运行启动类

出现

即为成功。

多动手,多思考

标签:goods,注册,spring,nacos,pom,模块,yml,cloud,搭建
From: https://www.cnblogs.com/ailj/p/17368959.html

相关文章

  • 第14讲 AXI_FULL_4CH显示通路搭建
    FPGA与ARM大小端的问题,在做FPGA移位拼接时,将先到的数据放到了高位,放在DDR中的数据顺序应该是按照地址0123排列0123数据,即高位数据放在低地址,也就是所谓的大端模式,然后在SDK中,将DDR中的数据同步到ARM时,由于ARM采用的是小端模式,所以按照地址0123存放的数据是3210,也就......
  • 第12讲 AXI_FULL-HP显示通路搭建
    对于AXIInterconnect的输出引脚     ......
  • docker搭建本地私有仓库详细步骤
    1、首先下载registry镜像dockerpullregistry12、在daemon.json文件中添加私有镜像仓库的地址并重启vim/etc/docker/daemon.json{ "insecure-registries":["192.168.59.111:5000"],#添加此段,“,”不可少,ip是本机IP地址 "registry-mirrors":["https://4abdkxlk.mi......
  • Idea开发环境中搭建Maven并且使用Maven打包部署程序
    阅读目录1.配置Maven的环境变量2.Idea开发环境中搭建Maven3.使用Maven开发JavaWeb项目(Idea14)4.使用Maven打包JavaWeb项目回到顶部1.配置Maven的环境变量a.首先我们去maven官网下载Maven程序,解压到安装目录,如图所示:b.配置M2_HOME的环境......
  • Beyond Compare 4 注册码
    BeyondCompare4注册码。 ---BEGINLICENSEKEY---H1bJTd2SauPv5Garuaq0Ig43uqq5NJOEw94wxdZTpU-pFB9GmyPk677gJvC1Ro6sbAvKR4pVwtxdCfuoZDb6hJ5bVQKqlfihJfSYZt-xVrVU27+0JahFbqTmYskatMTgPyjvv99CF2Te8ec+Ys2SPxyZAF0YwOCNOWmsyqN5y9tq2Kw2pjoiDs5gIH-uw5U49JzO......
  • nacos1.4读取properties配置文件中的数组对象,实现动态更新
     方法一:不可自动更新配置,有待检查。packagecom.javaweb.admin.config;importcom.alibaba.nacos.api.config.ConfigType;importcom.alibaba.nacos.api.config.annotation.NacosConfigurationProperties;importlombok.Data;importorg.springframework.context.annotat......
  • Linux部署安装nacos
    1.下载安装编译后的安装包:tar-zxvfnacos-server-1.1.4.tar.gz 2.启动服务:shstartup.sh-mstandalone 3.关闭服务:shshutdown.sh 4.打开配置文件,修改端口号:vimapplication.properties将server.port=8848  修改为期望值(需要重启) 5.登录后台配置:http://192.168.......
  • 基于centos release 7.9.2009的LINUX进行Git服务器搭建
    1.安装Git首先需要在CentOSLinux7.9.2009上安装Git。可以使用以下命令在命令行中安装:sudoyuminstallgit2.创建Git仓库在CentOS上创建Git仓库有两种方式:创建本地Git仓库或创建远程Git仓库。如果想要将CentOSLinux7.9.2009作为Git服务器,需要创建远程G......
  • ChatGPT搭建Express与Vue3网页版带后台
    技术架构golang+node16+vite+vue3+expresscnetos7以上+宝塔面板文字搭建教程把service目录上传到宝塔www/wwwroot目录下面,放通3000端口,新建一个数据库,导入数据库,修改.env里的配置进入到service目录,执行nohup./linux.bin&测试后端api有没有正常启动,执行curlhttp:/......
  • esp32环境搭建
    开发环境安装源地址https://github.com/espressif/idf-installer#espressif-ide-offline-installer开发环境一键安装安装包链接:https://pan.baidu.com/s/1IEstb2l-k74BznjDNVn2xA?pwd=xcha提取码:xcha开发环境搭建esp-idevs拓展选择“快速”作为最快......