上一篇文章我已經在linux 部署了 nacos 的服務,這篇將新建一個示例工程,並將該工程註冊進nacos 中
一、創建微應用
我將在IDEA 中創建一個maven多模塊的工程,用來測試服務註冊,首先建立一個spring boot 工程,創建過程相信大家都會,不用多說,這個工程作爲父工程,刪除裏面沒用的文件,只保留pom文件,父工程的好處是便於管理依賴版本,網上有很多教程,然後在該工程下建立了兩個模塊,分別是server-a,config-server,其中config-server 是後面演示配置註冊管理用的,暫時用不到,可以不建。
我這裏簡單貼一下工程結構
測試工程:tmlxq-test01
父工程pom文件:
<?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>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>tmlxq.team</groupId>
<artifactId>springcloud-alibaba-mainserver</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springcloud-alibaba-mainserver</name>
<packaging>pom</packaging>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-boot.version>2.2.6.RELEASE</spring-boot.version>
<spring-cloud.version>Hoxton.SR4</spring-cloud.version>
<springcloud-alibaba.version>2.2.1.RELEASE</springcloud-alibaba.version>
<encoding>UTF-8</encoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<modules>
<!--服務a-->
<module>server-a</module>
</modules>
<dependencyManagement>
<dependencies>
<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>${springcloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring-boot.version}</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
按照官方示例 https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_start_a_provider_application
在父工程的pom文件下 引入了 spring-cloud 和com.alibaba.cloud ,定義好了版本
<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>${springcloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
並在modules中聲明瞭子模塊關係
子模塊
pom
<?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>tmlxq.team</groupId>
<artifactId>springcloud-alibaba-mainserver</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>tmlxq.team</groupId>
<artifactId>server-a</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>server-a</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--web-->
<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>
<!--監控 不是必須-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependency>
<!--熱啓動-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
在子模塊parent標籤中聲明依賴工程,就是第一個建的父工程,然後引入nacos
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
然後再創建子項目的配置文件
application.yml
模仿官方示例修改了配置文件
## 這裏我把服務註冊到9010端口
server:
port: 9010
spring:
application:
name: service-A ## 服務的名稱
cloud:
nacos:
discovery:
server-addr: 192.168.101.129:8848/ ## 要將服務註冊到的nacos 地址,就是我們啓動的nacos鏡像服務地址
management:
endpoints:
web:
exposure:
include: '*'
啓動
工程創建完畢,修改配置文件後,記得要在項目的啓動類添加@EnableDiscoveryClient註解,就會開啓服務註冊的功能
@SpringBootApplication
@EnableDiscoveryClient
public class ServerAApplication {
public static void main(String[] args) {
SpringApplication.run(ServerAApplication.class, args);
}
}
現在啓動服務。打開nacos控制檯,可以看到我們的server-A已經添加到nacos的服務列表中了。