传统读取方式:
在application.properties中写入要读取的内容,如下:
coupon.user.name=Tom
coupon.user.age=27
接口引入处:
@Value("${coupon.user.name}")private String name;@Value("${coupon.user.age}")private Integer age;
该方式存在弊端是当配置文件改了,需要重新打包发布,比较繁琐。
nacos配置方式:
1.引入依赖:
<!-- 服务注册/发现--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- 配置中心来做配置管理--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>
2.启动类加上服务注册和发现注解@EnableDiscoveryClient
3.需动态读取信息的接口加上注解@RefreshScope可实时检测nacos配置文件的变化;
@RefreshScope
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {@Autowiredprivate CouponService couponService;@Value("${coupon.user.name}")private String name;@Value("${coupon.user.age}")private Integer age;@GetMapping("/testConfig")public R testConfig(){return R.ok().put("name",name).put("age",age);}}
4.在本地新建一个bootstrap.propeties文件,该文件会优先读取,里边配置nacos地址和服务名
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
5.在nacos配置中心新建一个当前应用名的配置文件,跟上面声明的应用名保持一致,gulimall-coupon.properties,把本地application.properties里的内容复制过去,修改后,调用接口,发现已实时更新了。
PS:如果配置中心nacos config和项目配置文件配置相同节点,优先读取nacos config里边的配置内容。