中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

南投县| 万州区| 修水县| 崇信县| 中阳县| 新巴尔虎右旗| 伽师县| 深泽县| 宁陕县| 芒康县| 湘潭市| 乌拉特前旗| 孝义市| 蓬溪县| 无极县| 南雄市| 岚皋县| 蒙山县| 平顶山市| 房产| 元氏县| 康马县| 沈阳市| 磐石市| 黎川县| 博罗县| 怀集县| 仁寿县| 神农架林区| 盖州市| 塔河县| 古交市| 克东县| 东乡| 太白县| 喀喇| 晋城| 彩票| 水富县| 依安县| 遂宁市|