Nacos除了可以作为服务注册中心,它还有服务配置中心的功能。类似于consul config,Nacos 是支持热加载的。
在篇一的基础继续使用nacos作为配置中心
引入依赖
- 在需要统一管理配置的项目中添加对应依赖
<!-- nacos 配置 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-config</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>
- 项目中添加bootstrap配置文件(同样是支持properties和yml格式的),这里对应配置中心的配置必须是bootstrap,可以参考bootstrap与application配置文件的区别
#应用名称
spring.application.name=love-service-master
#服务器地址
server=127.0.0.1
#分组
group=DEV_GROUP
# Nacos 服务中心和配置中心地址
spring.cloud.nacos.discovery.server-addr=${server}:8848
spring.cloud.nacos.config.server-addr=${server}:8848
#需要加载外部配置,必须写在bootstrap中
## Nacos 配置中心获取配置文件 坐标
spring.cloud.nacos.config.group=${group}
spring.cloud.nacos.config.prefix=love-service
spring.profiles.active=master
spring.cloud.nacos.config.file-extension=properties
这里没有配置应用端口号,类似于这种具体应用的配置,稍后都写到配置中心对应的配置文件中
- nacos配置中心,添加编辑配置与bootstrap中对应坐标一致
新建配置
- 热加载
写一个Controller,在Controller上添加 @RefreshScope 实现配置的热加载,先到上述配置中修改配置,添加username属性
@Controller
@RefreshScope
public class ConfigController {
@Value("${username}")
private String username;
@ResponseBody
@RequestMapping("/getUsername")
public String get() {
return username;
}
}
启动工程,在浏览器上访问localhost:8888/getUsername,可以返回在nacos控制台上配置的username。在nacos 网页上更改username的配置,在不重启工程的情况下,重新访问localhost:8888/getUsername,返回的事修改后的值,可见nacos作为配置中心实现了热加载功能。