传统的获取配置文件中的值的方法:applicaton.properties中配置一些值,然后在Controller中用@value注解获取,如下
coupon.user.name=zhangsan
coupon.user.age=20
@Value("${coupon.user.name}")
private String name;
@Value("${coupon.user.age}")
private Integer age;
@RequestMapping("/test")
public R test(){
return R.ok().put("name", name).put("age", age);
}
传统方式的缺点:产品部署上线后每次更改配置需要重新修改源代码的配置,再次部署上线,十分麻烦
解决办法:引入Nacos配置中心,将原来applicaton.properties中的配置的值搬到配置中心,部署上线后想要更改直接到配置中心中更改即可
引入Nacos配置中心:
第一步:Common工程中的pom导入配置中心的依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
第二步:在每个微服务的 /src/main/resources/中创建bootstrap.properties 配置文件,并配置 Nacos Config 元数据(微服务的名字和Nacos配置中心的地址)
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
第三步:配置中心中新建配置,Data ID为微服务名称.properties ,配置数据直接复制过来,发布
第四步:引用了配置中心配置的数据的Controller层添加注解@RefreshScope,并继续用@value获取值
原来的applicaton.properties中的配置可以删除了(如果配置中心与applicaton.properties配置文件中都配置了相同的项,优先获取配置中心的值)
@RefreshScope
@RestController
@RequestMapping("gulimallcoupon/coupon")
public class CouponController {
@Autowired
private CouponService couponService;
@Value("${coupon.user.name}")
private String name;
@Value("${coupon.user.age}")
private Integer age;
@RequestMapping("/test")
public R test(){
return R.ok().put("name", name).put("age", age);
}
}
第五步,启动更改配置中心的配置,测试成功
版权声明:本文为weixin_43686221原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。