SpringBoot项⽬如何从Nacos配置中⼼动态读取配置信息
SpringBoot项⽬如何从Nacos配置中⼼动态读取配置信息
1、项⽬中引⼊依赖
要从nacos中读取配置,需要引⼊相关依赖。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2、检查配置⽂件
⾸先要保证项⽬中的l配置⽂件存在,且⾥⾯的配置正确。
注意:这⾥我使⽤的为.yml格式配置⽂件。且指定spring.profiles.active=dev
如果你也使⽤的.yml格式,⼀定要在l中指明file-extension: yml
#l
spring:
application:
name: application-test
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yml
#没有使⽤命名空间的话,可以不⽤配置,默认为public
namespace: 5bfce986-3911-4699-a972-9e664841821b
3、确认nacos中配置⽂件名规则
${prefix}-${spring.profile.active}.${file-extension}
prefix 默认为spring.application.name的值,也可以通过配置项spring.fig.prefix来配置。
spring.profile.active即为当前环境对应的profile,详情可以参考 Spring Boot⽂档。注意:当spring.profile.active为空时,对应的连接符-也将不存在,dataId 的拼接格式变成${prefix}.${file-extension}
file-exetension为配置内容的数据格式,可以通过配置项spring.fig.file-extension来配置。⽬前只⽀持properties和yml类型。4、读取配置
下⾯我们通过简单的⼏个步骤来读取我们配置的yaml配置内容。
第⼀步:创建⼀个配置读取的Controller
创建⼀个名为ConfigController的配置查询控制器,并且类上配置@RequestMapping("/config")。
第⼆步:通过@Value注解读取配置信息
我们在之前章节通过applicationContext#getEnvironment#getProperty⽅法可以直接获取对应的Nacos Config的配置信息,当然SpringCloud Alibaba也同样⽀持通过@Value注解来获取配置信息,如下所⽰:
@RestController
@RequestMapping(value = "/config")
@RefreshScope
public class ConfigController {
/**
* 读取hengboy.name配置信息
*/
@Value(value = "${hengboy.name:}")
private String userName;
/**
* 读取hengboy.age配置信息
*/
@Value(value = "${hengboy.age:}")
private String userAge;
/**
* 获取配置内容
*
* @return
*/
@RequestMapping(value = "/get")
public String getConfig() {
return userName + ":" + userAge;
}
}
解释:${hengboy.name:}表⽰需要从全局的配置内容中读取hengboy.name的配置信息,如果没有到则使⽤冒号(:)后的内容,当然这⾥我们没有添加任何的默认值,如果没有配置则为空字符串。
第三步:通过@RefreshScope注解实时刷新配置信息
我们在ConfigController控制器上添加了注解@RefreshScope主要⽬的是来实时同步通过Nacos Console修改的配置内容。
@RefreshScope注解是SpringCloud内部提供,在需要配置热更新的配置bean上加springCloud的动态加载配置。
bootstrap项目
@RefreshScope可⽤在类上也可⽤在⽅法上,当⽤在⽅法上时,如果是想加载配置bean中使⽤前缀注⼊的属性时(@ConfigurationProperties(prefix =“st”)),任然会不能实时的动态更新,配置bean中使⽤@Value注⼊的属性可实现动态更新。
第四步:运⾏测试
第五步:实时更新测试
通过Nacos Console我们修改下两个参数的内容并且重新发布配置信息:
hengboy.name : admin -> admin-change-after
hegnboy.age : 25 -> 30

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。