上一节实现了nacos集群的搭建,本节主要讲述java程序注册到nacos集群和调用集群的配置。
版本选择
首先使用IDEA开发工具创建一个空的SpringBoot项目,更改项目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>
<!--继承springboot父项目-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.juwusheng</groupId>
<artifactId>springcloudalibabademo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>SpringCloudAlibabaDemo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>11</java.version>
<spring.cloud.version>Hoxton.SR12</spring.cloud.version>
<spring.cloud.alibaba.version>2.2.7.RELEASE</spring.cloud.alibaba.version>
</properties>
<dependencyManagement>
<dependencies>
<!--维护springcloud-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--维护springcloud alibaba-->
<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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
上一节我们使用的nacos的版本为2.0.3,对应的SpringCloudAlibaba开源库版本2.2.7.RELEASE,SpringCloud开源库版本是Hoxton.SR12,SpringBoot开源库版本是2.3.12.RELEASE,Jdk版本最低要求为11。
SpringCloudAlibaba、SpringCloud和SpringBoot版本对照关系
配置好pom.xml后,刷新一下maven。
创建Module更改pom.xml文件
选中项目右击新建Module,项目名称为ConfigClient,创建成功后更改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.juwusheng</groupId>
<artifactId>springcloudalibabademo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.juwusheng</groupId>
<artifactId>configclient</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>ConfigClient</name>
<description>Demo project for Spring Boot</description>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--引入nacos client的依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<exclusions>
<exclusion>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
</exclusion>
<exclusion>
<groupId>org.hdrhistogram</groupId>
<artifactId>HdrHistogram</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
nacos配置
登录nacos,点击命名空间-->新建命名控件,创建一个study的名称空间。
点击配置管理--配置列表,选择study命名空间,创建配置。
新建一个Data ID为 configclient-dev.yaml,配置格式为YAML,配置内容为constomer.username为zhangsan,
这里尽量避免把server.port等配置填写配置内容。
修改Module配置文件
创建bootstrap.yaml资源文件,放在src/main/resources文件下。application.properties重命名为application.yaml,并清空文件中的内容。bootstrap.yaml增加配置
server:
port: 8888
spring:
application:
name: CONFIGCLIENT
cloud:
nacos:
discovery:
namespace: bf3b249f-ee29-4c7c-af98-fa5c2b4fb568
config:
namespace: bf3b249f-ee29-4c7c-af98-fa5c2b4fb568
group: DEFAULT_GROUP
name: configclient-dev
file-extension: yaml
server-addr: 192.168.43.85:8845,192.168.43.229:8846,192.168.43.251:8847
spring.cloud.nacos.server-addr为配置nacos集群IP加端口,多个使用逗号隔开。
spring.cloud.nacos.discovery.namespace为study命名控件ID。
spring.cloud.nacos.config.namespace为study命名控件ID。如下图
spring.cloud.nacos.config.group为配置的Group,即分组的意思。
spring.cloud.nacos.config.name为配置名称。
spring.cloud.nacos.config.file-extension为配置格式。
创建请求类
新建一个DemoController类,如下
@RestController
@RefreshScope
public class DemoController {
@Value("${constomer.username}")
private String username;
@GetMapping("/demo")
public String demo(){
return "demo ok!!!"+ username;
}
}
注意观察类上增加注解@RefreshScope,这个注解的作用下面会说明,这里先买个关子,还有@Value注解从属性文件中获取constomer.username的值。相信不用我说大家也应该清楚,虽两个yaml文件都没有constomer.username属性,但我们配置到了nacos,可以直接在nacos集群上读取。
启动类增加注解
启动类ConfigClientApplication增加注解EnableDiscoveryClient。如下配置
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class, args);
}
}
到这里我们大功搞成,启动程序。
服务发现
打开nacos管理页查看,如下
上文中修改Module配置文件添加spring.cloud.nacos.config.namespace相关属性的值为study的命名空间ID,程序启动后,nacos控制台服务列表study就可查看我们的程序了。
nacos配置更改
更改配置前打开浏览器访问http://localhost:8888/demo
点击配置列表,选择study命名空间,修改Data Id 为configclient-dev.yaml数据,更改其配置内容中constomer.username的值为lisi.如下
完成后再次访问http://localhost:8888/demo