上一篇文章我已经在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的服务列表中了。