記事のディレクトリ
Beanのライフサイクル
1.コンセプト
- 一言で言えば、Beanのライフサイクルは、オブジェクトの作成からオブジェクトの破壊までのプロセスです。
第二に、豆のライフサイクル
(1)コンストラクターを介してBeanインスタンスを作成します(无参数构造
)
(2)Beanプロパティと他のBeanへの参照の値を設定します(调用 set 方法
)
(3)Bean初期化のメソッドを呼び出します(进行配置初始化的方法
)
(4)Beanを使用できます(对象获取
)
(5)コンテナが閉じたら、Beanを破壊するメソッドを呼び出します(进行配置销毁的方法
)
3つ目は、Beanのライフサイクルを示します
Ⅰ.Ordersクラスを作成します
- 属性を宣言する
- パラメータなしのコンストラクタを書く
- set()メソッドを書く
- 初期化メソッドを作成する
- Bean破壊メソッドを作成する
public class Orders {
// 声明属性
private String oName;
// 1.无参构造
public Orders() {
System.out.println("第一步:执行无参构造器创建bean实例");
}
// 2.set
public void setoName(String oName) {
this.oName = oName;
System.out.println("第二步:调用set方法设置属性的值");
}
// 3.创建执行的初始化的方法 --- 在xml文件中配置
public void initMethod() {
System.out.println("第三步:执行初始化的方法");
}
// 5.创建执行的bean销毁方法
public void destroyMethod() {
System.out.println("第五步:执行销毁方法");
}
}
Ⅱ。設定ファイルを変更する
- Beanオブジェクトを作成するように構成する
- 追加
init-method属性
、初期化方法を指定 - 追加し
destroy-method属性
、Beanを破棄する方法を指定します
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 配置bean对象 -->
<bean id="oders" class="Bean的生命周期.Orders" init-method="initMethod" destroy-method="destroyMethod">
<property name="oName" value="电脑"></property>
</bean>
</beans>
Ⅲ。テストクラスを書く
public class Test {
@org.junit.Test
public void test_orders(){
try {
ApplicationContext context = new ClassPathXmlApplicationContext("Bean的生命周期/bean_Orders.xml");
// 4.获取bean实例对象
Orders orders = context.getBean("orders",Orders.class);
System.out.println("第四步:获取创建的bean实例对象");
// 5.手动销毁bean实例对象
((ClassPathXmlApplicationContext)context).close();
} catch (Exception e){
e.getMessage();
}
}
}
4. Beanのポストプロセッサ、Beanのライフサイクルには7つのステップがあります
(1)コンストラクターを介してBeanインスタンスを作成します(无参数构造
)
(2)Beanプロパティと他のBeanへの参照の値を設定します(调用 set 方法
)
- BeanインスタンスをBeanポストプロセッサに渡す方法
postProcessBeforeInitialization
(3)Bean初期化のメソッドを呼び出します(进行配置初始化的方法
)
- BeanインスタンスをBeanポストプロセッサに渡す方法
postProcessAfterInitialization
(4)Beanを使用できます(对象获取
)
(5)コンテナが閉じたら、Beanを破壊するメソッドを呼び出します(进行配置销毁的方法
)
▶ポストプロセッサを追加した場合の効果を示します
(1)クラスを作成し、インターフェースBeanPostProcessorを実装し、ポストプロセッサーを作成します
public class MyBeanPost implements BeanPostProcessor {
/**
* 初始化之前调用
* @param bean
* @param beanName
* @return
* @throws BeansException
*/
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("在初始化之前执行的方法");
return bean;
}
/**
* 初始化之后调用
* @param bean
* @param beanName
* @return
* @throws BeansException
*/
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("在初始化之后执行的方法");
return bean;
}
}
(2)構成ファイルを変更します
- ポストプロセッサクラスのBeanオブジェクトを設定するだけで済みます。ポストプロセッサークラスは
BeanPostProcessor接口
ポストプロセッサーを実装し、ポストプロセッサーは現在の構成ファイル内のすべてのBeanにポストプロセッサー処理を追加します。。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 配置bean对象 -->
<bean id="orders" class="Bean的生命周期.Orders" init-method="initMethod" destroy-method="destroyMethod">
<property name="oName" value="电脑"></property>
</bean>
<!-- 配置后置处理器 -->
<bean id="myBeanPost" class="Bean的生命周期.Test.MyBeanPost"></bean>
</beans>