亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java?Spring?Bean生命周期管理的示例分析

發布時間:2022-03-04 10:41:26 來源:億速云 閱讀:179 作者:小新 欄目:開發技術

小編給大家分享一下Java Spring Bean生命周期管理的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

    Spring Bean的生命周期管理

    一、Spring Bean的生命周期

    Java?Spring?Bean生命周期管理的示例分析

    通過以下方式來指定Bean的初始化和銷毀方法,
    當Bean為單例時,Bean歸Spring容器管理,Spring容器關閉,就會調用Bean的銷毀方法
    當Bean為多例時,Bean不歸Spring容器管理,Spring容器關閉,不會調用Bean的銷毀方法

    二、通過@Bean的參數(initMethod ,destroyMethod)指定Bean的初始化和銷毀方法

    1、項目結構

    Java?Spring?Bean生命周期管理的示例分析

    2、Person
    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生命周期管理的示例分析

    三、Bean實現接口InitializingBean, DisposableBean

    1、Person
    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生命周期管理的示例分析

    四、通過注解@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生命周期管理的示例分析

    五、使用接口BeanPostProcessor實現類(后置處理器)

    1、項目結構

    Java?Spring?Bean生命周期管理的示例分析

    2、Person
    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生命周期管理的示例分析

    看完了這篇文章,相信你對“Java Spring Bean生命周期管理的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    尼玛县| 密云县| 大余县| 紫云| 绥中县| 徐闻县| 陕西省| 开原市| 进贤县| 安平县| 黑河市| 泸水县| 白玉县| 鱼台县| 漳州市| 泽库县| 响水县| 宕昌县| 土默特左旗| 积石山| 加查县| 元氏县| 武邑县| 杂多县| 西吉县| 平昌县| 碌曲县| 资源县| 新余市| 顺昌县| 桓仁| 资阳市| 灵璧县| 汾阳市| 察雅县| 施秉县| 彭阳县| 莱西市| 东乌珠穆沁旗| 阿合奇县| 当阳市|