标签: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