springcloud alibaba-nacos配置中心
nacos除了充当注册中心外,还能作为配置中心,下面进行演示。
1. 创建 模块,用于读取 nacos配置中心的统一配置
2. 添加依赖
<dependencies>
<!-- nacos config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- SpringCloud alibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- web组件 -->
<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>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>cn.aib.springcloud</groupId>
<artifactId>springclud-api-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
3. 添加配置;这里配置有两个:bootstrap.yml和appliation.yml。前者是为了读取共用的配置,后者是本模块私有的配置
bootstrap.yml:
server: port: 3377 spring: application: name: nacos-config-client cloud: nacos: discovery: server-addr: localhost:8848 #注册中心的地址 config: server-addr: localhost:8848 #配置中心的地址 file-extension: yaml # 要读取nacos上的配置文件的后缀,这里只能是yaml,不能是yml
application.yml:
spring:
profiles:
active: dev
4. 主启动
@EnableDiscoveryClient @SpringBootApplication public class NacosCientApplication { public static void main(String[] args) { SpringApplication.run(NacosCientApplication.class, args); } }
5. 启动nacos
6. 在nacos添加统一配置信息
6. 测试;访问http://localhost:3377/config/info
总结:
1. 配置中心默认读取 nacos上的 ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension};因此DataID 的命名要符合 服务名-开发环境名.后缀名
2. 目前nacos支持yaml,不支持yml
3. 如果要动态刷新,需要加业务类上加 @RefreshScope