可以用nacos作为配置中心。配置中心的意思是不在application.properties等文件中配置了,而是放到nacos配置中心公用,这样无需每台机器都改。
使用:
1,添加nacos配置中心的依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2,在服务中创建/src/main/resources/bootstrap.properties ,这个文件是springboot里规定的,他优先级别application.properties高
#nacos配置文件名
spring.application.name=gulimall-coupon
#nacos地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
3,浏览器去nacos里的配置列表,点击+号,data ID:gulimall-coupon.properties,配置
coupon.user.name="张三"
coupon.user.age=12
4,加入@RefreshScope,nacos配置中心修改配置,服务能立刻感知并能获取到
如果配置中心和当前应用的配置文件中都配置了相同的项,优先使用配置中心的配置
@RefreshScope
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {
@Autowired
private CouponService couponService;
@Value("${coupon.user.name}")//从application.properties中获取//不要写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);
}
命名空间:
用于进行租户粒度的配置隔离。不同命名抗击那下,可以存在相同的Group和Data ID的配置。Namesace的常用场景之一是不同环境的区分隔离,例如开发测试环境和生产环境的资源(如配置,服务)隔离等。
默认是public(保留空间),默认新增的所有配置都在
-
每一个微服务之间相互隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置
-
创建开发,测试,生产环境命名空间(利用命名空间来做环境隔离)
注意:在bootstrap.properties配置上,需要使用哪个命名空间下的配置,(后面字符为命名空间的唯一id,不能直接写命名空间的名字)
spring.cloud.nacos.config.namespace=026da01a-cb2e-4f12-98b8-fcc966ace0d6
配置集:
一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源,线程池,日志级别等配置项目。
配置集ID:
Nacos中的某个配置集的ID。配置集ID是组织划分配置的维度之一。Data ID通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。Data ID通常采用类java包(如com.taobao.tc.refund.log.level)的命名规则保证全局唯一性。此命名规则非强制。
配置分组:
Nacos中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如buy或Trade)对配置集进行分组,从而区分Data ID相同的配置集。当你在Nacos上创建一个配置时,如果为填写配置分组的名称,则配置分组的名称默认采用DEFAULT_GROUP。配置
加载多个配置集
- 微服务任何配置信息,任何配置文件都可以放在配置中心中
- 只需要在bootstrap.properties说明加载配置中哪些配置文件即可
- @Value,@ConfigurationProperties...以前springboot任何方法从配置文件中获取值,都可以使用,
配置有的优先使用配置中心的
使用:
将一个配置文件细分成datasource.xml,mybatis.xml,other.xml,放到同一个配置分组dev,命名空间为该服务名
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-add=127.0.0.1:8484
spring.cloud.nacos.config.namespace=907308ff-078d-4b99-8528-8b6571eee5fb
#配置分组名称
spring.cloud.nacos.config.extension-configs[0].data-id=datasource.yml
#
spring.cloud.nacos.config.extension-configs[0].group=dev
spring.cloud.nacos.config.extension-configs[0].refresh=true
spring.cloud.nacos.config.extension-configs[1].data-id=mybatis.yml
spring.cloud.nacos.config.extension-configs[1].group=dev
spring.cloud.nacos.config.extension-configs[1].refresh=true
spring.cloud.nacos.config.extension-configs[2].data-id=other.yml
spring.cloud.nacos.config.extension-configs[2].group=dev
spring.cloud.nacos.config.extension-configs[2].refresh=true