學習目标:
學習使用nacos作為配置中心配置變量
背景及前置:
1、安裝nacos伺服器;
2、通常擷取配置的方法:
- 在application.properties檔案中添加配置
coupon.user.name=zhangsan coupon.user.age=24
- 使用時通過@Value("${coupon.user.name}")擷取配置資訊
@RestController @RequestMapping("coupon/coupon") public class CouponController { @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的配置中心:
1、導入依賴
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2、在src/main/resourcs目錄下建立bootstrap.properties檔案,并添加下面代碼;
spring.application.name=gulimall-coupon #名字為應用名稱,根據自己情況修改
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 #nacos伺服器位址,如果安裝在本機一般無需修改
3、在nacos配置中心(上面所配的伺服器位址)配置管理->配置清單添加資料集,資料集名稱預設為:應用名.properties,并添加相關配置
4、對使用到配置的類名添加@RefreshScope注釋(可以動态擷取并重新整理配置),使用@Value("${}")擷取配置
@RefreshScope
@RestController
@RequestMapping("coupon/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);
}
}
5、一旦配置有所修改,可以直接在nacos配置中心進行修改并釋出,無需修改代碼并重新編譯打包;