一. 安装nacos server
https://nacos.io/zh-cn/docs/quick-start.html
下载nacos压缩包,解压并执行startup.sh -m standalone
打开localhost:8848/nacos
控制后台查看服务启动情况
二. 控制后台新增配置
DataId: nacos定义的配置集
格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
-
prefix
默认为spring.application.name
的值,也可以通过spring.cloud.nacos.config.prefix
来配置 -
spring.profiles.active
环境配置,如果不存在则不参与拼接 -
file-extension
文件格式 如properties
三. 创建client,读取配置
-
创建bootstrap.properties,增加配置信息
spring.application.name=my-config spring.cloud.nacos.config.server-addr=localhost:8848
-
pom配置
<dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.3.2.RELEASE</version> </dependency> </dependencies>
-
创建Bootstrap类,并执行
@SpringBootApplication public class ConfigApplication { private static ConfigurableEnvironment env; public static void main(String[] args) { SpringApplication sp = new SpringApplication(ConfigApplication.class); ConfigurableApplicationContext applicationContext = sp.run(args); env = applicationContext.getEnvironment(); // 获取配置信息 System.out.println(env.getProperty("show.title")); } }
output:
hello world
-
@RefreshScope支持热更新
使用
@RefreshScope
注解,使name字段支持动态刷新@Component @RefreshScope public class Book { @Value("${show.title}") private String name; //省略getter setter方法 ... }
获取book的name属性
Book book = applicationContext.getBean("book", Book.class); // 每隔一秒获取name属性一次 while (true) { Thread.sleep(1000L); System.out.println(book.getName()); }
Output:
影响力 影响力 影响力 ## 修改show.title 从删库到跑路 从删库到跑路