91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Spring常用接口有哪些

發布時間:2021-09-14 16:46:20 來源:億速云 閱讀:211 作者:chen 欄目:大數據

這篇文章主要講解了“Spring常用接口有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Spring常用接口有哪些”吧!

1、InitializingBean接口 
InitializingBean接口中只有一個afterPropertiesSet方法,從方法的名稱上很容易理解,這個方法是在Bean的屬性都設置值后被調用,用于完成一些初始化工作。當然,在Spring的配置文件中init-method的配置也是在Bean的屬性都設置值后被調用,用于完成一些初始化工作,不過在執行順序上,接口的方法先于配置。值得注意的是,這兩種方式都是用于完成一些初始化工作,所以相應的方法中不要編寫一些復雜且執行時間很長的邏輯。

         當需要在bean的全部屬性設置成功后做些特殊的處理,可以讓該bean實現InitializingBean接口。效果等同于bean的init-method屬性的使用或者@PostContsuct注解的使用。

      三種方式的執行順序:先注解,然后執行InitializingBean接口中定義的方法,最后執行init-method屬性指定的方法。

2、DisposableBean接口 
DisposableBean接口中只有一個destroy方法,該方法會在Bean被銷毀、生命周期結束之前被調用,用于做一些銷毀的收尾工作。同樣,在Spring的配置文件中destroy-method配置也完成同樣的工作,不過在執行順序上,接口的方法先于配置。

當需要在bean銷毀之前做些特殊的處理,可以讓該bean實現DisposableBean接口。效果等同于bean的destroy-method屬性的使用或者@PreDestory注解的使用。

      三種方式的執行順序:先注解,然后執行DisposableBean接口中定義的方法,最后執行destroy-method屬性指定的方法。

3、ApplicationContextAware接口 
ApplicationContextAware中只有一個setApplicationContext方法。實現了ApplicationContextAware接口的類,可以在該Bean被加載的過程中獲取Spring的應用上下文ApplicationContext,通過ApplicationContext可以獲取Spring容器內的很多信息。

當一個類需要獲取ApplicationContext實例時,可以讓該類實現ApplicationContextAware接口。代碼展示如下:

public class Animal implements ApplicationContextAware, BeanNameAware{  

    private String beanName;  

    private ApplicationContext applicationContext;  

    public void setBeanName(String name) {  

        this.beanName = name;  

    }  

    /** 

     * @param applicationContext 該參數將由Spring容器自動賦值 

     */  

    public void setApplicationContext(ApplicationContext applicationContext)throws BeansException {  

        this.applicationContext = applicationContext;  

    }  

    public void run(){  

        System.out.println(beanName);  

        //發布自定義事件  

        AnimalEvent event = new AnimalEvent(this, "老虎");  

        applicationContext.publishEvent(event);  

    }  

}  

通過@Autowired注解可以自動裝配一些常用對象實例:

    @Autowired  

    private MessageSource messageSource;   

    @Autowired  

    private ResourceLoader resourceLoader;   

    @Autowired  

    private ApplicationContext applicationContext; 

4、BeanFactoryAware接口 
BeanFactoryAware接口中只有一個setBeanFactory方法。實現了BeanFactoryAware接口的類,可以在該Bean被加載的過程中獲取加載該Bean的BeanFactory,同時也可以獲取這個BeanFactory中加載的其它Bean。

5、FactoryBean接口 
FactoryBean接口可以實現Bean實例化的個性定制,讓Spring容器加載我們想要的Bean。實現了FactoryBean接口的類,可以通過實現getObject方法,實現加載我們想要的Bean。

6、BeanPostProcessor接口 
BeanPostProcessor接口中有兩個方法,分別為postProcessBeforeInitialization和postProcessAfterInitialization。實現了BeanPostProcessor接口的類,會在每個Bean初始化(即調用setter)之前和之后,分別調用這個類中的postProcessBeforeInitialization方法和postProcessAfterInitialization方法,實現初始化的邏輯控制。

7、InstantiationAwareBeanPostProcessor接口 
InstantiationAwareBeanPostProcessor接口中,常用的方法是postProcessBeforeInstantiation和postProcessAfterInstantiation。每個Bean的實例化(即調用構造函數)之前和之后,會分別調用實現了該接口的類中的postProcessBeforeInstantiation和postProcessAfterInstantiation方法。

8、BeanFactoryPostProcessor接口 
BeanFactoryPostProcessor接口中只有postProcessBeanFactory方法。實現了該接口的類,可以在Bean被創建之前,獲取容器中Bean的定義信息,并且可以進行修改。實現類中的postProcessBeanFactory方法只會被執行一次,且先于BeanPostProcessor接口的方法。

9、當需要監聽自定義事件時,可以新建一個實現ApplicationListener接口的類,并將該類配置到Spring容器中。代碼展示如下:

/** 

 * 自定義事件監聽器 

 */  

public class CustomEventListener implements ApplicationListener {  

    public void onApplicationEvent(ApplicationEvent event) {  

        if(event instanceof AnimalEvent){  

            AnimalEvent animalEvent = (AnimalEvent)event;  

            System.out.println("觸發自定義事件:Animal name is " + animalEvent.getName());  

        }  

    }  

<!-- 自定義事件監聽器:Spring容器自動注冊它 -->  

<bean id="customEventListener" class="com.cjm.spring.CustomEventListener"/>   

 要發布自定義事件,需要調用ApplicationContext的publishEvent方法

10、ApplicationEvent抽象類

       當需要創建自定義事件時,可以新建一個繼承自ApplicationEvent抽象類的類。代碼展示如下:

/** 

 * 自定義事件 

 */  

public class AnimalEvent extends ApplicationEvent {  

    private String name;  

    public String getName() {  

        return name;  

    }  

    /** 

     * @param source 事件源對象 

     */  

    public AnimalEvent(Object source){  

        super(source);  

    }  

    public AnimalEvent(Object source, String name){  

        super(source);  

        this.name = name;  

    }  

}

感謝各位的閱讀,以上就是“Spring常用接口有哪些”的內容了,經過本文的學習后,相信大家對Spring常用接口有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

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

AI

太康县| 锦屏县| 姚安县| 东光县| 辽宁省| 班戈县| 松原市| 新源县| 淮北市| 元江| 大庆市| 自治县| 黄龙县| 登封市| 咸阳市| 翼城县| 荆门市| 凤冈县| 望都县| 扎鲁特旗| 炉霍县| 马公市| 高清| 南汇区| 大邑县| 甘孜| 根河市| 武冈市| 若尔盖县| 天水市| 沙雅县| 皋兰县| 乌拉特后旗| 安徽省| 漳州市| 澎湖县| 老河口市| 塘沽区| 深圳市| 武功县| 吕梁市|