[春のIOCコンテナ] Beanのライフサイクル



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>

ここに画像の説明を挿入

トップに戻る


おすすめ

転載: blog.csdn.net/qq_45797116/article/details/113445908