SpringBoot的IOC模組註解及簡單案例(二)
本文將會講到SpringBoot的IOC模組下的註解進行總結,主要目的是為了方便之後查詢註解和快速應用。
將會以:元件註冊,生命週期,屬性賦值,自動裝配來進行區分。
二、生命週期
1、總結:自定義Bean的初始化和銷燬方法 1)、 指定init-method 和 destory-method
2)、 通過讓 Bean 實現 InitializingBean 介面,定義初始化邏輯 DisposableBean 介面,定義銷燬邏輯
3)、可用 @PostConstruct,在 Bean 建立完成並且賦值完成後,執行該註解標註的方法 @PreDestroy,在容器銷燬 Bean 之前,執行該註解標註的方法
4.)、BeanPostProcessor ,在Bean 初始化前後進行一些處理工作 postProcessBeforeInitialization: 在初始化之前工作 postProcessAfterInitialization: 在初始化之後工作
建立:Bean 建構函式 ——> @PostConstruct ——> InitializingBean 介面 ——> bean 定義的 init-method ——> postProcessBeforeInitialization ——> Bean 初始化完成 ——> postProcessAfterInitialization ——> 容器建立完成
銷燬:@PreDestroy ——> DisposableBean 介面 ——> bean 定義的 destoryMethod ——> Bean銷燬
2、示例:
1)、init-method 和 destory-method
@Configuration
public class MainConfigOfLifeCycle {
@Bean(initMethod="initTest", destroyMethod="detoryTest")
public Car car() {
return new Car();
}
}
public class Car { public void initTest() { System.out.println(" .. init-method .. "); } public void detoryTest() { System.out.println(" .. destory-method .. "); } }
2)、InitializingBean 和 DisposableBean 介面
@Configuration
public class MainConfigOfLifeCycle {
@Bean
public Cat cat() {
return new Cat();
}
}
public class Cat implements InitializingBean, DisposableBean {
//該Bean在銷燬時,呼叫
public void destroy() throws Exception {
// TODO Auto-generated method stub
System.out.println(" .. DisposableBean .. ");
}
//該Bean建立完成並且賦值完成後,呼叫
public void afterPropertiesSet() throws Exception {
// TODO Auto-generated method stub
System.out.println(" .. InitializingBean .. ");
}
}
3)、@PostConstruct 和 @PreDestroy
@Configuration
public class MainConfigOfLifeCycle {
@Bean
public Dog dog() {
return new Dog();
}
}
public class Dog {
//物件建立並賦值之後呼叫
@PostConstruct
public void init() {
System.out.println(" .. @PostConstruct .. ");
}
//容器移除物件之前
@PreDestroy
public void detory() {
System.out.println(" .. @PreDestroy .. ");
}
}
4)、BeanPostProcessor 介面
@Configuration
public class MainConfigOfLifeCycle {
@Bean
public MyBeanPostProcessor myBeanPostProcessor() {
return new MyBeanPostProcessor();
}
}
public class MyBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
// TODO Auto-generated method stub
System.out.println(" .. postProcessBeforeInitialization .. ");
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
// TODO Auto-generated method stub
System.out.println(" .. postProcessAfterInitialization .. ");
return bean;
}
}