SpringBoot 属性配置解析
2023-12-13 10:01:18
属性配置介绍
spring官方提供的17中属性配置的方式
- Devtools全局配置
- 测试环境@TestPropertySource注解
- 测试环境properties属性
- 命令行参数
- SPRING_APPLICATION_JSON属性
- ServletConfig初始化参数
- ServletContext初始化参数
- JNDI属性
- JAVA系统属性
- 操作系统环境变量
- RandomValuePropertySource随机值属性
- jar包外的application-{profile}.properties
- jar包内的application-{profile}.properties
- jar包外的application.properties
- jar包内的application.properties
- @PropertySource绑定配置
- 默认属性
Spring Aware介绍
Aware介绍
- Spring框架优点:Bean感知不到容器的存在
- 使用场景:需要使用Spring容器的功能资源
- 引入缺点:Bean和容器强耦合
常用Aware
Aware调用
自定义实现Aware
import org.springframework.beans.factory.Aware;
public interface MyAware extends Aware {
void setFlag(Flag flag);
}
@Component
public class MyAwareProcessor implements BeanPostProcessor {
private final ConfigurableApplicationContext configurableApplicationContext;
public MyAwareProcessor(ConfigurableApplicationContext configurableApplicationContext) {
this.configurableApplicationContext = configurableApplicationContext;
}
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof Aware) {
if (bean instanceof MyAware) {
((MyAware) bean).setFlag((Flag) configurableApplicationContext.getBean("flag"));
}
}
return bean;
}
}
Environment解析
getOrCreateEnvironment
- 添加servletConfigInitParams属性集
- 添加servletContextInitParams属性集
- 添力Jndi属性集
- 添加systemProperties属性集
- 添加systemEnvironment属性集
configureEnvironment
- 添加defaultProperties厲性集
- 添加commandLineArgs属性集
listener.environmentPrepared
- 添加spring_application_json属性集
- 添加vcap属性集
- 添加random属性集
- 添加application-profile.(properties | yml)属性集
ConfigurationPropertySources.attach
- 添加configurationProperties属性集
ConfigurationClassParser
- 添加@PropertySources属性集
Spring profile介绍
将不同的参数配置绑定在不同的环境
默认使用
application.properties
application-default.properties
激活profile
spring.profiles.active
=xxspring.profiles.active
与default
互斥(即配置active后application-default.properties
会失效)
Spring profile原理解析
源码流程解析
处理入口
initializeProfiles逻辑
profiles处理
profile处理逻辑
Load逻辑
addLoadedPropertySources
面试题
- SpringBoot属性配置方式有哪些?
- 介绍下Spring Aware的作用及常见的有哪些?
- Spring Aware注入原理?
- 动手写一个Spring Aware?
- Environment对象是如何加载属性集的?
- 部分属性集如spring_application_json何时被加载的?
- 介绍下Spring Profile?常用配置方式?
- Spring Profile配置方式有哪些注意事项,为什么?
- Spring Profile处理逻辑?
文章来源:https://blog.csdn.net/Box_clf/article/details/134843922
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!