实现初始化器的方式二:
SpringApplication初始化完毕后手动添加
新建一个springBoot项目:
[往期文章:怎么新建一个springBoot项目] https://www.jianshu.com/p/18f5bd189ced
新建SecondInitializer.java:
新建SecondInitializer.java.png
新建TestService.java
新建TestService.java.png
新建controller方法:
新建controller方法.png
修改项目启动方式:
修改项目启动方式
浏览器访问获取初始化器配置信息:
浏览器访问获取初始化器配置信息
SecondInitializer.java源码:
package com.xy.initializer;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.annotation.Order;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.MapPropertySource;
import java.util.HashMap;
import java.util.Map;
@Order(2)
public class SecondInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
ConfigurableEnvironment environment =applicationContext.getEnvironment();
Map<String,Object> map = new HashMap<String,Object>();
map.put("xy2","my name is SecondInitializer!");
MapPropertySource mapPropertySource = new MapPropertySource("secondInitializer",map);
environment.getPropertySources().addLast(mapPropertySource);
System.out.println("Run SecondInitializer");
}
}
TestService.java源码:
package com.xy.service;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class TestService implements ApplicationContextAware {
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
System.out.println("test setApplicationContext......");
this.applicationContext = applicationContext;
}
public String test(){
System.out.println(applicationContext.getBean(DemoService.class));
DemoService t = applicationContext.getBean(DemoService.class);
return applicationContext.getEnvironment().getProperty("xy2");
}
}