1.InitializingBean
失效此介面的類,在初始化完成之后,會自動呼叫afterPropertiesSet()方法,但是在init-method方法之后(如果配置)
@Component
public class InitializingBeanTest implements InitializingBean {
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("afterPropertiesSet 被呼叫");
}
}
2.BeanPostProcessor
bean后置處理器,它是用來攔截所有 bean 的初始化的,在 bean 的初始化之前,和初始化之后做一些事情,這點從 BeanPostProcessor 介面的定義也可以看出來,它里面就兩個方法:postProcessBeforeInitialization 和 postProcessAfterInitialization,
2.1:后置處理器的postProcessorBeforeInitailization方法是在bean實體化,依賴注入之后及自定義初始化方法(例如:組態檔中bean標簽添加init-method屬性指定Java類中初始化方法、
@PostConstruct注解指定初始化方法,Java類實作InitailztingBean介面)之前呼叫
2.2:后置處理器的postProcessorAfterInitailization方法是在bean實體化、依賴注入及自定義初始化方法之后呼叫
@Component
public class BeanPostProcessorTest implements BeanPostProcessor {
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("后置處理器處理bean=【"+beanName+"】開始");
return bean;
}
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("后置處理器處理bean=【"+beanName+"】完畢");
return bean;
}
}
3.ApplicationContextAware
當一個類實作了這個介面之后,這個類就可以方便的獲得ApplicationContext物件,然后從applicationContext物件中利用getBean()獲取容器中的bean
@Component
public class SpringContextHelper implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext context) throws BeansException {
applicationContext = context;
}
public static <T> T getInstance(String beanName, Class<T> beanType) {
return applicationContext.getBean(beanName, beanType);
}
public static <T> T getInstance(Class<T> bean) {
return applicationContext.getBean(bean);
}
}
4.BeanFactoryAware
同ApplicationContextAware物件一樣,實作此介面可以獲取到BeanFactory物件,然后利用getBean獲取我們需要bean
@Service
public class BeanFactoryHelper implements BeanFactoryAware {
private static BeanFactory beanFactory;
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.beanFactory = beanFactory;
}
public static Object getBean(String beanName){
if(beanFactory == null){
throw new NullPointerException("BeanFactory is null!");
}
return beanFactory.getBean(beanName);
}
}
5.ApplicationRunner
在專案完全啟動后,呼叫實作此介面的方法,
@Component
public class CommonRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("啟動后執行,,,,,");
}
}
6.@PostConstruct
在bean初始化之前呼叫,具體和afterPropertiesSet(),還有init-method呼叫順序,可以看下spring的生命周期

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/543734.html
標籤:其他
