一、 Nacos配置中心
1、在gulimall-common公共模块添加依赖
<!--服务注册发现--><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、配置bootstrap.properties文件
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
3、在gulimall-coupon模块中的application.properties文件中添加以下测试内容
coupon.user.name=zhangsan
coupon.user.age=18
4、在gulimall-coupon模块CouponController中编写测试接口获取配置文件中的信息
@Value("${coupon.user.name}")private String name;@Value("${coupon.user.age}")private Integer age;@GetMapping("/test")public R test(){return R.ok().put("name",name).put("age",age);}/*** 列表*/@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params){PageUtils page = couponService.queryPage(params);return R.ok().put("page", page);}
5、在nacos页面的配置管理-配置列表中添加配置信息【Data Id】
6、在CouponController中添加@RefreshScope注解,表示可以实时动态刷新nacos配置文件的信息
@RefreshScope
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {....
}
7、测试
访问test接口,当nacos对应配置文件中的内容发生变化,则这个接口获取到的内容也随之变化。
如果Nacos配置中心和当前应用的配置文件中都配置了相同的项,优先使用配置中心的配置。
二、命名空间
1、命名空间:配置隔离
默认:public(保留空间):默认新增的所有配置都在public空间。
1、可以创建开发、测试、生产三种环境,利用命名空间来做环境隔离。
2、同样的在prod生产环境配置相同的配置信息
3、如果我们想使用生产环境的配置,怎么在切换?
在配置文件中添加prod对应的id,如果不定义命名空间,则默认使用public中的配置文件, 注意:在bootstrap.properties配置上,需要使用哪个命名空间下的配置
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=5cf89452-969b-4cb7-aff9-44c9f9c9e97d
4、测试接口
5、每个微服务之间互相隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置
6、配置集:所有的配置的集合
7、配置集ID:类似文件名
Data ID:类似文件名
8、配置分组
默认所有的配置集都属于:DEFAULT_GROUP
在同一个命名空间下,可以配置多个分组
在程序中,如果想使用prod这个分组的配置信息,则需要在bootstrap.properties文件添加以下配置:
spring.cloud.nacos.config.group=prod
测试:
2、从配置中心中同时加载多个配置集
1、将application.yml文件中的配置信息分离,数据库配置的放在一个配置里面,mybatis的相关信息放在一个配置里面,其他的放在other.yml文件中
2、将application.yml文件注释掉
3、在bootstrap.properties文件中配置:
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=9f9290f2-6b08-480f-a163-5dc02cdb936e
spring.cloud.nacos.config.group=prodspring.cloud.nacos.config.ext-config[0].data-id=datasource.yml
spring.cloud.nacos.config.ext-config[0].group=dev
spring.cloud.nacos.config.ext-config[0].refresh=truespring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[1].group=dev
spring.cloud.nacos.config.ext-config[1].refresh=truespring.cloud.nacos.config.ext-config[2].data-id=other.yml
spring.cloud.nacos.config.ext-config[2].group=dev
spring.cloud.nacos.config.ext-config[2].refresh=true
总结:
1、微服务任何配置信息,任何配置文件都可以放在配置中心中。
2、只需要在bootstrap.properties说明加载配置中心中哪些配置文件即可。
3、@Value、@ConfigurationProperties获取配置文件中的值信息。
配置中心有的优先使用配置中心的。