spring-cloud-alibaba2.2.x nacos配置中心使用
文章目录
本地项目的基础环境
环境 | 版本 |
---|---|
jdk | 1.8.0_201 |
maven | 3.6.0 |
Spring-boot | 2.2.4.RELEASE |
Spring-cloud-alibaba | 2.2.1.RELEASE |
构建本项目之前,请详细参看如下步骤,如果已经搭建好,略过即可;
项目地址的码云的git地址https://gitee.com/liqi01/badger-spring-cloud-alibaba.git
《spring-cloud-alibaba.2.2.x 服务注册与发现nacos简介以及环境搭建》
1、badger-spring-cloud-alibaba-config-client项目搭建
1.1、maven的pom文件如下,就是一个普通的web的springboot项目,加入了nacos的nacos-discovery
的包,以及spring-cloud-starter-alibaba-nacos-config
包
<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 http://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.4.RELEASE</version>
</parent>
<groupId>com.badger</groupId>
<artifactId>badger-spring-cloud-alibaba-config-client</artifactId>
<name>badger-spring-cloud-alibaba-config-client</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties>
<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>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.1.RELEASE</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>
<finalName>badger-spring-cloud-alibaba-config-client</finalName>
</build>
<description>配置中心客户端</description>
</project>
1.2、yaml的配置文件
spring:
profiles:
active: dev
application:
name: badger-spring-cloud-alibaba-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848
config:
server-addr: localhost:8848
file-extension: yaml
management:
endpoints:
web:
exposure:
include: '*'
config的可以填写的属性 可以参考 配置类com.alibaba.cloud.nacos.NacosConfigProperties.class
;
1.3、springboot的主启动类以及业务演示代码
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigClientApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(ConfigClientApplication.class, args);
}
@RestController
@RefreshScope
public class DemoController {
@Value("${server.port}")
String port;
@Value("${spring.cloud.client.ip-address}")
String address;
@GetMapping("/demo")
public String demo() {
return "我的地址是-->" + address + ":" + port;
}
}
}
@RefreshScope
: Spring Cloud 原生注解 @RefreshScope
实现配置自动更新;
1.4、详细参考github上的官方文档,或者spring的英文文档
2、项目启动,测试使用
启动步骤如下:
2.1、启动nacos的服务,端口8848;
打开nacos服务http://localhost:8848/nacos
默认账号密码是nacos
;
配置管理
–>配置列表
;新增一个配置
data id:badger-spring-cloud-alibaba-config-client-dev.yaml
;
${prefix}-${spring.profiles.active}.${file-extension}
prefix
默认为spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
来配置。spring.profiles.active
即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当spring.profiles.active
为空时,对应的连接符-
也将不存在,dataId 的拼接格式变成${prefix}.${file-extension}
file-exetension
为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension
来配置。目前只支持properties
和yaml
类型。
group:默认DEFAULT_GROUP
配置格式:yaml
内容:
server:
port: 7000
2.2、启动应用;
默认第一次启动的时候,已经拉到了配置文件的端口号,所以启动的时候,也是用7000端口启动的
调用接口 http://localhost:7000/demo
我的地址是-->172.16.2.41:7000
;
2.3、修改nacos的配置,把内容改成70001;
再次调用接口 http://localhost:7000/demo
我的地址是-->172.16.2.41:7001
;
可以看到,容器的启动的端口,还是7000,但是
server.port= 7001;只是改变了再内存中的属性,并没有改变容器端口,跟spring-cloud-config的策略是一致的;
详细参考
https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config