傳統讀取方式:
在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里邊的配置內容。