亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

spring中的DisposableBean和InitializingBean,ApplicationContextAware的用法

2019-11-14 15:10:24
字體:
來源:轉載
供稿:網友

在sPRing容器初始化bean和銷毀bean的以前的操作有很多種,
  目前我知道的有:在xml中定義的時候用init-method和destory-method,還有一種就是定義bean的時候實現DisposableBean和InitializingBean 這兩個接口,打開InitializingBean 的源碼

public interface InitializingBean {    /**     * Invoked by a BeanFactory after it has set all bean properties supplied     * (and satisfied BeanFactoryAware and applicationContextAware).     * <p>This method allows the bean instance to perform initialization only     * possible when all bean properties have been set and to throw an     * exception in the event of misconfiguration.     * @throws Exception in the event of misconfiguration (such     * as failure to set an essential property) or if initialization fails.     */    void afterPropertiesSet() throws Exception;}

根據注解很清楚的可以看出,afterPropertiesSet()表示在資源加載完以后,初始化bean之前執行的方法,我猜想spring底層應該會在初始化bean的時候,應該會使用(bean instanceof InitializingBean)判斷是不是實現了這個接口,其實在很多框架中都是這么干的,但是因為沒研究過spring源碼,暫且還不知道底層原理。這樣我們就可以在初始化的時候,做一些自己想要做的事了。
  同理,DisposableBean就是在一個bean被銷毀的時候,spring容器會幫你自動執行這個方法,估計底層原理也是差不多的,對于一些使用完之后需要釋放資源的bean,我們都會實現這個接口,或者是配置destory-method方法。源碼也基本是相似的,只是把afterPropertiesSet改為destroy。


ApplicationContextAware
  其實我們看到---Aware就知道是干嘛用的了,就是屬性注入的,但是這個ApplicationContextAware的不同地方在于,實現了這個接口的bean,當spring容器初始化的時候,會自動的將ApplicationContext注入進來:

import org.apache.commons.lang.Validate;import org.springframework.beans.BeansException;import org.springframework.beans.factory.DisposableBean;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.context.annotation.Lazy;import org.springframework.stereotype.Service;/** * applicationContext靜態化 * 使用了ApplicationContextAware接口的類,如果受spring容器管理的 * 話,那么就會自動的調用ApplicationContextAware中的setApplicationContext方法 * @author Hotusm * */@Service@Lazy(false)public class SpringContextHolder implements ApplicationContextAware,DisposableBean{        private static ApplicationContext applicationContext;    @Override    public void setApplicationContext(ApplicationContext applicationContext)            throws BeansException {                SpringContextHolder.applicationContext=applicationContext;    }    //清空applicationContext 設置其為null    @Override    public void destroy() throws Exception {        SpringContextHolder.clearHolder();    }    //獲得applicationContext    public static ApplicationContext getApplicationContext() {        //assertContextInjected();        return applicationContext;    }        public static void clearHolder(){        applicationContext=null;    }    //獲取Bean    public static <T> T getBean(Class<T> requiredType){        //assertContextInjected();        return (T) getApplicationContext().getBean(requiredType);    }    @SuppressWarnings("unchecked")    public static <T> T getBean(String name){        assertContextInjected();        return (T) getApplicationContext().getBean(name);    }    //判斷application是否為空    public static void assertContextInjected(){        Validate.isTrue(applicationContext==null, "application未注入 ,請在springContext.xml中注入SpringHolder!");    }    }

因為我們在做開發的時候,并不是說在每一個地方都能將屬性注入到我們想要的地方去的,比如在Utils使用到dao,我們就不能直接注入了,這個時候就是我們需要封裝springContext的時候了,而ApplicationContextAware就起了關鍵性的作用。




發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美国产日产韩国视频| 亚洲国产成人精品久久| 国内精品小视频| 中文字幕日韩欧美精品在线观看| 欧美在线视频免费观看| 大量国产精品视频| 久久精品精品电影网| 国产日韩中文字幕| 国产成人小视频在线观看| 亚洲美女视频网| 综合激情国产一区| 国产一区二区三区在线免费观看| 国产精品中文字幕在线观看| 亚洲性视频网站| 一个人看的www欧美| 亚洲精品自拍第一页| 精品美女永久免费视频| 亚洲影院在线看| 久久久天堂国产精品女人| 伊人久久综合97精品| 91亚洲精品久久久| 久久久久国产视频| 国产精品美女www爽爽爽视频| 日韩美女毛茸茸| 久久久久久久国产| 亚洲电影免费观看高清完整版在线| 亚洲欧美日韩精品| 亚洲偷熟乱区亚洲香蕉av| 亚洲第一二三四五区| 国产乱人伦真实精品视频| 久久九九全国免费精品观看| 91亚洲精品久久久久久久久久久久| 国产视频在线观看一区二区| 国产大片精品免费永久看nba| 久久精品亚洲热| 欧美激情视频网站| 欧美大人香蕉在线| 国产精品综合网站| 欧美激情xxxx性bbbb| 亚洲毛片在线观看.| 亚洲91av视频| 国内免费精品永久在线视频| 国产日韩欧美在线观看| 国产精品女主播| 91香蕉嫩草神马影院在线观看| 亚洲人成欧美中文字幕| 欧美激情乱人伦一区| 国产精品色视频| 久久精彩免费视频| 欧美日韩亚洲精品一区二区三区| 秋霞午夜一区二区| 亚洲欧美日韩一区二区在线| 国产精品电影网| 国产中文字幕91| 日韩视频免费中文字幕| 日韩在线不卡视频| 欧美国产精品日韩| 国产一区二区丝袜| 日韩av在线免费观看| 亚洲欧美在线免费| 国产美女精彩久久| 久久久久亚洲精品成人网小说| 亚洲欧美一区二区激情| 中文字幕不卡av| 欧美激情a∨在线视频播放| 97成人超碰免| 国产精品爽黄69天堂a| 国产日韩欧美视频| 精品国产一区二区三区久久狼5月| 日韩av最新在线观看| 538国产精品一区二区免费视频| 538国产精品一区二区免费视频| 97免费中文视频在线观看| 久久99热这里只有精品国产| 日韩av电影在线网| 91精品在线观| 亚洲视频在线播放| 91免费福利视频| 按摩亚洲人久久| 国产精品高潮呻吟久久av黑人| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品福利无圣光在线一区| 日本国产欧美一区二区三区| 国产精品久久久久久影视| 日本免费在线精品| 黑人精品xxx一区一二区| 热re99久久精品国产66热| 狠狠色香婷婷久久亚洲精品| 亚洲有声小说3d| 久久精品电影一区二区| 欧美激情第一页xxx| 中文字幕视频在线免费欧美日韩综合在线看| 欧美高清一级大片| 国产精品欧美激情| 在线观看免费高清视频97| 欧美肥老太性生活视频| 亚洲欧美日韩中文在线制服| 黄色成人av在线| 亚洲最大成人免费视频| 亚洲自拍小视频免费观看| 黑人巨大精品欧美一区二区三区| 欧美成人黄色小视频| 国产精品亚洲片夜色在线| 一道本无吗dⅴd在线播放一区| 国产精品视频一区二区三区四| 97精品一区二区三区| 久久久久久久久综合| 国内精品国产三级国产在线专| 91av福利视频| 97超级碰碰碰久久久| 久久久久久久91| 欧美国产亚洲精品久久久8v| 欧美国产日韩中文字幕在线| 日韩在线国产精品| 91久久久精品| 国产高清在线不卡| 午夜精品久久久久久99热软件| 97在线免费观看| 91高清免费视频| 国内精品一区二区三区| 久久频这里精品99香蕉| 欧美激情中文字幕在线| 国产精品88a∨| 68精品国产免费久久久久久婷婷| 日韩av电影手机在线| 亚洲天堂成人在线视频| 秋霞成人午夜鲁丝一区二区三区| 亚洲国产毛片完整版| 日韩欧美中文字幕在线播放| 中文字幕亚洲色图| 91免费欧美精品| 91在线中文字幕| 国产美女主播一区| 欧美日韩美女在线观看| 欧美日韩国产精品一区二区不卡中文| 成人h视频在线| 欧美午夜精品伦理| 日韩在线小视频| 成人精品在线观看| 国产91精品黑色丝袜高跟鞋| 91在线播放国产| 日韩视频在线观看免费| 青草热久免费精品视频| 欧美精品国产精品日韩精品| 亚洲视频在线看| 欧美日韩国产一区二区三区| 97国产精品视频人人做人人爱| 92版电视剧仙鹤神针在线观看| 日本中文字幕不卡免费| 亚洲乱码一区av黑人高潮| 日韩在线观看电影| 亚洲精品久久久久久久久久久久久| 欧美国产欧美亚洲国产日韩mv天天看完整| 色妞色视频一区二区三区四区| 欧美日韩高清在线观看| 欧美激情综合色| 欧美午夜久久久| 国产精品一二三视频| 久久精品亚洲94久久精品| 亚洲国产欧美一区二区丝袜黑人| 欧美激情欧美激情在线五月| 亚洲欧美综合精品久久成人| 国产精品亚洲第一区| 亚洲性生活视频|