ApplicationContextAware
@Component
public class ApplicationContextHolder implements ApplicationContextAware {
private static ApplicationContext context;
@Override
public void setApplicationContext(@NonNull ApplicationContext applicationContext) throws BeansException {
context = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return context;
}
public static <T> T getBean(Class<T> tClass) {
return context.getBean(tClass);
}
public static Environment getEnvironment() {
return context.getEnvironment();
}
public static String getProperty(String name) {
return context.getEnvironment().getProperty(name);
}
}
InitializingBean
@Component
public class InitializingBeanTest implements InitializingBean {
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("InitializingBeanTest.afterPropertiesSet");
}
}
SmartInitializingSingleton
@Component
public class SmartInitializingSingletonTest implements SmartInitializingSingleton {
@Override
public void afterSingletonsInstantiated() {
System.out.println("afterSingletonsInstantiated");
}
}
CommandLineRunner
@Component
public class CommandLineRunnerTest implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("CommandLineRunner");
}
}
ApplicationListener
@Component
public class ApplicationListenerTest implements ApplicationListener<ContextRefreshedEvent> {
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
System.out.println("ApplicationListener.ContextRefreshedEvent");
}
}