标签:vat 自定义 原理 容器 print ping throw ddl init
1、Spring Boot 系统初始化器
系统初始化器介绍
SpringFactoriesLoader介绍
系统初始化器原理
总结
2、系统初始化器介绍
类名: ApplicationContextinitializer
介绍: Spring容量刷新之前执行的一个回调函数
作用: 向SpringBoot容器中注册属性
使用:继承接口自定义实现
3、系统初始化器实践
1)创建初始化器
在包initializer下创建FirstInitializer
/**
*
* 第一个系统初始化器
*/
@Order(1)
public class FirstInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
ConfigurableEnvironment environment = applicationContext.getEnvironment();
Map<String, Object> map = new HashMap<>();
map.put("key1","value1");
MapPropertySource mapPropertySource = new MapPropertySource("firstInitializer", map);
environment.getPropertySources().addLast(mapPropertySource);
System.out.println("run FirstInitializer");
}
}
2) 创建spring.factories

内容为:
org.springframework.context.ApplicationContextInitializer=com.example.demo.initialize.FirstInitializer
3) 创建服务类 TestService
@Component
public class TestService implements ApplicationContextAware
{
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
public String test(){
return applicationContext.getEnvironment().getProperty("key1");
}
}
4) 在Controller层增加方法
@RequestMapping("/test")
@ResponseBody
public String test(){
return testService.test();
}
5) 启动工程查看效果
可以发现打印了run FirstInitializer

然后调用接口。返回值为之前设置的value1

标签:vat 自定义 原理 容器 print ping throw ddl init
原文地址:https://www.cnblogs.com/linlf03/p/12267887.html