Nacos作为配置中心使用
Nacos除了作为注册中心外,还可以作为配置中心使用。下面我们演示Nacos作为配置中心的方式。
1、在Nacos配置中心添加配置项
前面使用配置中心的时候,可以看到除了服务管理外,还有配置管理的菜单,这里就是配置中心进行管理的地方。
添加一个用来测试的配置项。通过点击列表右上角“+”按钮(新增),进入编辑界面,然后添加一个测试的配置。
其中,
-
Data ID,对应客户端的配置spring.cloud.nacos.config.prefix+spring.cloud.nacos.config.file-extension,其中,前者默认值为${spring.application.name}表示服务名,也可以通过参数自定义一个名称而不用服务名;后者默认为properties,用来表示配置文件的扩展名,也可以通过参数自定义一个扩展名。
-
Group ,对应客户端的spring.cloud.nacos.config.group参数,默认DEFAULT_GROUP,用来表示配置文件的分组。
-
配置格式,指配置文件的格式,一般使用properties或yaml。
-
配置内容,需要配置的参数,根据选择配置格式,配置相应的参数,配置方式和SpringBoot引用中的配置方式一样。这里选了properties格式,内容如上所示。
配置完成后,点击“发布”按钮即可。这个时候,配置中心的配置文件就准备好了,下面我们开始在项目中使用这个配置文件中的配置项。
2、使用nacos-service验证配置中心的配置
1、添加使用配置中心所需的依赖,如下:
<!--引入Nacos的配置中心依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
该依赖和注册发现所需依赖,可以一起使用,也可以分开使用。
2、修改配置文件bootstrap.properties
这里需要注意的是,配置中心的相关配置需要放到bootstrap.properties配置文件中,这里涉及到了配置文件在Spring Boot中的加载顺序问题,这里不再展开,具体请参考《Spring Boot中配置文件的加载顺序问题详解》。这里为了方便,直接把所有的配置都放到了bootstrap.properties文件中,如下:
spring.application.name=qriver-nacos-server
server.port=8001
#注册中心配置
spring.cloud.nacos.discovery.server-addr=121.36.73.183:8848
#配置中心配置
spring.cloud.nacos.config.server-addr=121.36.73.183:8848
3、修改测试类ServiceController
这里需要注意几点:
1>、 @RefreshScope注解,
需要在类上添加@RefreshScope注解,否则修改配置中心的文件时,应用程序中不会自动刷新。
2>、 使用@Value注解获取参数
通过@Value注解,使用${xxx}方式获取配置中的参数。
3>、修改测试方法
这里主要修改了service方法,用于测试。
@RestController
@RefreshScope
public class ServiceController {
@Value("${config.testValue}")
private String testValue;
@GetMapping("/service")
public String service(@RequestParam(required = false) String name) {
if(StringUtils.isEmpty(name)){
return "hello, " + testValue;
}
return "hello, " + name;
}
}
4、启动程序,然后使用postman访问:http://127.0.0.1:8001/service,注意这里不要带参数。这时候会出现,配置中心里配置项的参数,如下:
修改配置项的值后,重新发布,再访问,返回结果也会跟着变化,这里不再贴出结果了。
至此,使用nacos实现配置中心的功能也就演示完了。完整的源码:传送门。