spring boot(2.4.x之前版本)和spring cloud项目中配置文件的作用

为了防止理解问题,pom.xml 版本依赖如下


	org.springframework.boot
	spring-boot-starter-parent
	2.3.12.RELEASE
	 



	
		
			org.springframework.cloud
			spring-cloud-dependencies
			Hoxton.SR12
			pom
			import
		
		
			com.alibaba.cloud
			spring-cloud-alibaba-dependencies
			2.2.6.RELEASE
			pom
			import
		
	

日常开发中经常使用的配置文件有 application 和 bootstrap(日志相关的例外不做讲解),对应的配置文件后缀分别为  properties 或者 yml(yaml),区别如下

application

属于 spring boot。

简单使用不依赖其他服务,spring boot 的依赖足够。

bootstrap

属于 spring cloud,位于 spring-cloud-context 中。


  org.springframework.cloud
  spring-cloud-context
  3.0.0

可以看到,在 spring.factories 中声明了 ApplicationListener 的实现类  BootstrapApplicationListener,所以,开源组件如果想要使用 spring cloud 的组件一般都会引入这个。

spring boot(2.4.x之前版本)和spring cloud项目中配置文件的作用_第1张图片

想要读取对应的配置需要结合 BootstrapApplicationListener 进行读取。

如果未引入 spring-cloud-context 相关依赖,bootstrap 相关配置文件则无法找到。

idea 对应的文件图标颜色发生改变

引入了依赖

spring boot(2.4.x之前版本)和spring cloud项目中配置文件的作用_第2张图片

未引入依赖

spring boot(2.4.x之前版本)和spring cloud项目中配置文件的作用_第3张图片

其中,对应的配置加载都通过 ConfigFileApplicationListener 来处理。

github 上源码如下

https://github.com/spring-projects/spring-boot/blob/v2.3.12.RELEASE/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/config/package-info.java

https://github.com/spring-projects/spring-boot/blob/v2.3.12.RELEASE/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/config/ConfigFileApplicationListener.java

可以发现,ConfigFileApplicationListener 位于 spring boot 中。

从 spring cloud 2020.0.x 版本开始,针对  bootstrap 的处理发生改变,由于 spring cloud 2020.0.x 对应的 spring boot 版本为 2.4.x,所以需要做对应的升级处理。

你可能感兴趣的:(spring,boot,spring,cloud,java)