Spring Cloud Alibaba Nacos Config配置属性加载原理

本文详细解析了Spring Cloud Alibaba Nacos Config的配置属性加载原理,从NacosConfigBootstrapConfiguration开始,介绍了NacosPropertySourceLocator如何定位并加载配置,包括loadSharedConfiguration和loadNacosDataIfPresent的过程。此外,还探讨了NacosPropertySourceBuilder和PropertySourceBootstrapConfiguration在配置加载到环境变量中的作用。最后,文章总结了自定义配置中心时可参考的逻辑步骤。
摘要由CSDN通过智能技术生成

本文介绍

spring cloud 作为主流的微服务分布式组件,本身已经提供了配置中心spring cloud config组件。国内阿里巴巴基于spring cloud体系实现了一套spring cloud alibaba的生态架构。

spring cloud alibaba nacos config的使用在这里不进行介绍,这里记录一下spring cloud alibaba nacos config的配置属性加载原理。

疑问?

在nacos客户端创建配置文件之后,那么疑问就来了,nacos客户端创建的配置属性是什么时候加载到环境变量中的呢?以及是怎样加载到环境变量中呢?

解答

NacosConfigBootstrapConfiguration

org.springframework.cloud.bootstrap.BootstrapConfiguration=\
com.alibaba.cloud.nacos.NacosConfigBootstrapConfiguration
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.alibaba.cloud.nacos.NacosConfigAutoConfiguration,\
com.alibaba.cloud.nacos.endpoint.NacosConfigEndpointAutoConfiguration
org.springframework.boot.diagnostics.FailureAnalyzer=\
com.alibaba.cloud.nacos.diagnostics.analyzer.NacosConnectionFailureAnalyzer

BootstrapConfiguration注解的作用是加载bootstrap application context,内部是一个数组类型,所有的配置都需要通过该注解进行引导

/**
 * A marker interface used as a key in <code>META-INF/spring.factories</code>. Entries in
 * the factories file are used to create the bootstrap application context.
 * 
 * @author Dave Syer
 *
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface BootstrapConfiguration {

	/**
	 * Excludes specific auto-configuration classes such that they will never be applied.
	 */
	Class<?>[] exclude() default {};

}

对于spring cloud nacos config而言,这里引导的配置类就是NacosConfigBootstrapConfiguration.class

@Configuration
@ConditionalOnProperty(name = "spring.cloud.nacos.config.enabled", matchIfMissing = true)
public class NacosConfigBootstrapConfiguration {

	@Bean
	@ConditionalOnMissingBean
	public NacosConfigProperties nacosConfigProperties() {
		return new NacosConfigProperties();
	}

	@Bean
	public NacosPropertySourceLocator nacosPropertySourceLocator(
			NacosConfigProperties nacosConfigProperties) {
		return new NacosPropertySourceLocator(nacosConfigProperties);
	}

}

在这个类里面会创建一个NacosPropertySourceLocator类,加载到spring容器里面。接下来就看NacosPropertySourceLocator.class这个类里面的内容。

NacosPropertySourceLoc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值