Java Spring Beanのライフサイクル管理の分析例

王林
リリース: 2023-04-18 09:13:44
転載
1378 人が閲覧しました

    Spring Bean のライフサイクル管理

    1. Spring Bean のライフサイクル

    Java Spring Beanのライフサイクル管理の分析例

    通过以下方式来指定Bean的初始化和销毁方法, 当Bean为单例时,Bean归Spring容器管理,Spring容器关闭,就会调用Bean的销毁方法 当Bean为多例时,Bean不归Spring容器管理,Spring容器关闭,不会调用Bean的销毁方法
    ログイン後にコピー

    2. @Bean パラメータ (initMethod、destroyMethod) を通じて Bean の初期化メソッドと破棄メソッドを指定します

    1. プロジェクト構造

    Java Spring Beanのライフサイクル管理の分析例

    2. 人物
    public class Person { public Person(){ System.out.println("Person 创建了..."); } public void init(){ System.out.println("Person 初始化了..."); } public void destroy(){ System.out.println("Person 被销毁了..."); } }
    ログイン後にコピー
    3. Bean 登録設定クラス (単一インスタンス)
    import com.dashu.bean.Person; import org.springframework.context.annotation.*; @Configuration public class BeanConfig { @Bean(initMethod = "init",destroyMethod = "destroy") public Person person(){ return new Person(); } }
    ログイン後にコピー
    4. テスト クラス
    import com.dashu.bean.Person; import com.dashu.config.BeanConfig; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Main { public static void main(String[] args) { //加载配置类获取容器 AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(BeanConfig.class); //获取Bean Person bean = annotationConfigApplicationContext.getBean(Person.class); //关闭容器 annotationConfigApplicationContext.close(); } }
    ログイン後にコピー
    5. テスト結果

    Java Spring Beanのライフサイクル管理の分析例

    6. Bean 登録設定クラス (複数のインスタンス)
    import com.dashu.bean.Person; import org.springframework.context.annotation.*; @Configuration public class BeanConfig { @Scope("prototype") @Bean(initMethod = "init",destroyMethod = "destroy") public Person person(){ return new Person(); } }
    ログイン後にコピー
    7. テスト結果

    Java Spring Beanのライフサイクル管理の分析例

    ##3. Bean 実装インターフェース InitializingBean、DisposableBean

    1. 人物
    import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; public class Person implements InitializingBean, DisposableBean { public Person(){ System.out.println("Person 创建了..."); } @Override public void afterPropertiesSet() throws Exception { System.out.println("Person 初始化了..."); } @Override public void destroy() throws Exception { System.out.println("Person 被销毁了..."); } }
    ログイン後にコピー
    2. Bean登録設定クラス
    import com.dashu.bean.Person; import org.springframework.context.annotation.*; @Configuration public class BeanConfig { @Bean public Person person(){ return new Person(); } }
    ログイン後にコピー
    3. テスト結果

    Java Spring Beanのライフサイクル管理の分析例##4. アノテーション @PostConstruct と@PreDestroy

    @PostConstruct:标注在Bean的初始化方法上 @PreDestroy:标注在Bean的销毁方法上
    ログイン後にコピー

    1、Person

    import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; public class Person { public Person(){ System.out.println("Person 创建了..."); } @PostConstruct public void init(){ System.out.println("Person 初始化了..."); } @PreDestroy public void destroy(){ System.out.println("Person 被销毁了..."); } }
    ログイン後にコピー
    2、テスト結果

    Java Spring Beanのライフサイクル管理の分析例5. インターフェース BeanPostProcessor 実装クラス (ポストプロセッサー) を使用します。 )

    1. プロジェクト構造

    Java Spring Beanのライフサイクル管理の分析例2. 人物

    import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; @Component public class Person { public Person(){ System.out.println("Person 创建了..."); } @PostConstruct public void init(){ System.out.println("Person 初始化了..."); } @PreDestroy public void destroy(){ System.out.println("Person 被销毁了..."); } }
    ログイン後にコピー
    3. Bean登録設定クラス
    import org.springframework.context.annotation.*; @Configuration @ComponentScan({"com.dashu"}) public class BeanConfig { }
    ログイン後にコピー
    4 、BeanPostProcessor 実装クラス (ポストプロセッサ)
    import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor; import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; /** * 后置处理器:初始化前后进行处理工作 */ @Component public class MyBeanPostProcessor implements BeanPostProcessor { /** * 初始化之前工作 * @param bean * @param beanName * @return * @throws BeansException */ @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println("初始化之前..."+beanName+"=["+bean+"]"); return bean; } /** * 初始化之后工作 * @param bean * @param beanName * @return * @throws BeansException */ @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { System.out.println("初始化之后..."+beanName+"=["+bean+"]"); return bean; } }
    ログイン後にコピー
    5、テスト結果

    以上がJava Spring Beanのライフサイクル管理の分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    関連ラベル:
    ソース:yisu.com
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!