Springcloud-Nacos

配置中心

参考掘金内容
简书
简书实时配置

  在springboot项目启动生命周期中preapareContext,完成容器的前置处理。里面有个步骤,遍历ApplicationContextInitializer的实现,调用其初始化方法。
在这里插入图片描述
在这里插入图片描述
  我们可以看到,在spring-cloud-context的项目中,自动注入了BootstrapConfiguration的实现。
在这里插入图片描述
  在springcloud规范中,提供了PropertySourceBootstrapConfiguration 继承ApplicationContextInitializer。另外还提供了PropertySourceLocator,两者配合完成配置中心的接入。
在这里插入图片描述
  看这个initialize初始化逻辑,会获取容器中所有PropertySourceLocator实现。然后调用其locateCollection方法进行配置的获取。获取到配置后,调用insertPropertySouorces方法将所有的PropertySource添加到Spring的环境变量environment中。

项目引入依赖

  <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>

  注解注入BootStrapConfiguration的实现类。NacosConfigBootstrapConfiguration
在这里插入图片描述

NacosConfigBootstrapConfiguration

  我们可以发现,在这个配置类中,向容器中注入了NacosPropertySourceLocator,它实现PropertySourceLocator接口。
在这里插入图片描述
  NacosPropertySourceLocator#locate方法如下。  nacosConfigProperties配置类,读取前缀spring.cloud.nacos.config的配置项。
  ConfigService是通过nacosConfigProperties创建的对象。默认是NacosConfigService。
  loadSharedConfiguration加载spring.cloud.nacos.config.shared-configs下面配置dataId,group对应的nacos上的配置数据。
  loadExtConfiguration加载spring.cloud.nacos.config.extension-configs下面配置dataId,group对应的nacos上的配置数据。
  loadApplicationConfiguration加载应用配置。根据spring.cloud.nacos.config下配置的文件名,group,后缀名等取nacos获取配置。
还会从environment中获取profile,拼接到dataId名称中,获取当前运行环境的配置

	@Override
	public PropertySource<?> locate(Environment env) {
		nacosConfigProperties.setEnvironment(env);
		// 获取ConfigService
		ConfigService configService = nacosConfigManager.getConfigService();

		if (null == configService) {
			log.warn("no instance of config service found, can't load config from nacos");
			return null;
		}
		long timeout = nacosConfigProperties.getTimeout();
		nacosPropertySourceBuilder = new NacosPropertySourceBuilder(configService,
				timeout);
		String name = nacosConfigProperties.getName();

       // 构建应用配置的名称前缀
		String dataIdPrefix = nacosConfigProperties.getPrefix();
		if (StringUtils.isEmpty(dataIdPrefix)) {
			// spring.cloud.nacos.config.p
  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值