Spring5框架中Bean的生命週期
阿新 • • 發佈:2021-01-31
技術標籤:spring5springspringjava後端beanioc
首先呢,大家都知道生命週期的概念,就是從一個物件的建立到該物件銷燬的過程。
接下來說一下bean的生命週期
(1)通過構造器建立bean例項(無引數構造)
(2)為bean的屬性設定值和對其他bean引用(呼叫set方法)
(3)呼叫bean的初始化的方法(需要進行配置初始化的方法)
(4)bean可以使用了
(5)當容器關閉時候,呼叫bean的銷燬方法
演示bean生命週期
public Orders() {
System.out.println("第一步 執行無引數構造建立 bean 例項" );
}
private String oname;
public void setOname(String oname) {
this.oname = oname;
System.out.println("第二步 呼叫 set 方法設定屬性值");
}
//建立執行的初始化的方法
public void initMethod() {
System.out.println("第三步 執行初始化的方法");
}
//建立執行的銷燬的方法
public void destroyMethod() {
System.out.println("第五步 執行銷燬的方法");
}
}
<bean id="orders" class="com.spring.Orders"
init-method="initMethod" destroy-method="destroyMethod">
<property name="oname" value=" 手機"></property>
</bean>
測試類:
@Test
public void testBean3() {
// ApplicationContext context =
// new ClassPathXmlApplicationContext("bean4.xml");
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("bean4.xml");
Orders orders = context.getBean("orders", Orders.class);
System.out.println("第四步 獲取建立 bean 例項物件");
System.out.println(orders);
//手動讓 bean 例項銷燬
context.close();
}
這個時候可以執行測試程式碼。輸出的結果是:
下面還有一種情況,就是bean的後置處理器,bean的生命週期有七步。
(1)通過構造器建立bean例項(無引數構造)
(2)為bean的屬性設定值和對其他bean引用(呼叫set方法)
(3)把bean例項傳遞bean後置處理器的方法postProcessBEforeInitialization
(4)呼叫bean的初始化的方法(需要進行配置初始化的方法)
(5)把bean例項傳遞bean後置處理器的方法postProcessAferInitialization
(6)bean可以使用了
(7)當容器關閉時候,呼叫bean的銷燬方法
演示新增後置處理器效果
(1)建立類,實現介面 BeanPostProcessor,建立後置處理器
public class MyBeanPost implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("在初始化之前執行的方法");
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("在初始化之後執行的方法");
return bean;
}
}
<!-- 配置後置處理器-->
<bean id="myBeanPost" class="com.spring5.MyBeanPost">