<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java學(xué)習(xí)

    java學(xué)習(xí)

     

    ApplicationContextAware接口的作用

    加載Spring配置文件時,如果Spring配置文件中所定義的Bean類實現(xiàn)了ApplicationContextAware 接口,那么在加載Spring配置文件時,會自動調(diào)用ApplicationContextAware 接口中的

    public void setApplicationContext(ApplicationContext context) throws BeansException

    方法,獲得ApplicationContext對象。

    前提必須在Spring配置文件中指定該類

    public class ApplicationContextRegister implements ApplicationContextAware {

    private Log log = LogFactory.getLog(getClass());

    public void setApplicationContext(ApplicationContext applicationContext)
       throws BeansException {
      ContextUtils.setApplicationContext(applicationContext);
      log.debug("ApplicationContext registed");
    }

    }

    public class ContextUtils {

    private static ApplicationContext applicationContext;

    private static Log log = LogFactory.getLog(ContextUtils.class);

    public static void setApplicationContext(ApplicationContext applicationContext) {
      synchronized (ContextUtils.class) {
       log.debug("setApplicationContext, notifyAll");
       ContextUtils.applicationContext = applicationContext;
       ContextUtils.class.notifyAll();
      }
    }

    public static ApplicationContext getApplicationContext() {
      synchronized (ContextUtils.class) {
       while (applicationContext == null) {
        try {
         log.debug("getApplicationContext, wait...");
         ContextUtils.class.wait(60000);
         if (applicationContext == null) {
          log.warn("Have been waiting for ApplicationContext to be set for 1 minute", new Exception());
         }
        } catch (InterruptedException ex) {
         log.debug("getApplicationContext, wait interrupted");
        }
       }
       return applicationContext;
      }
    }

    public static Object getBean(String name) {
      return getApplicationContext().getBean(name);
    }

    }

    配置文件:<bean class="com.sinotrans.framework.core.support.ApplicationContextRegister" />

    正常情況:

    1. public class AppManager extends ContextLoaderListener implements  ServletContextListener {  
    2.  
    3.     private ServletContext context;  
    4.     private WebApplicationContext webApplicationContext;  
    5.  
    6.     public void contextInitialized(ServletContextEvent sce) {  
    7.         this.context = sce.getServletContext();  
    8.         this.webApplicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(context);  
    9.         this.context.setAttribute("WEBAPPLICATIONCONTEXT", webApplicationContext);       } 
    1. HttpSession session = request.getSession();  
    2. WebApplicationContext webApplicationContext = (WebApplicationContext)session.getServletContext().getAttribute("WEBAPPLICATIONCONTEXT");  
    3. UnsubscribeEmailFacade unsubscribeEmailFacade = (UnsubscribeEmailFacade)webApplicationContext.getBean("unsubscribeEmailFacade"); 

    posted on 2013-08-23 09:29 楊軍威 閱讀(37194) 評論(1)  編輯  收藏

    評論

    # re: ApplicationContextAware接口的作用 2015-08-05 13:45 解決

    解決  回復(fù)  更多評論   


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品高清久久| 国产亚洲精品岁国产微拍精品| 91精品国产亚洲爽啪在线影院| 亚洲阿v天堂在线2017免费| 又粗又大又硬又爽的免费视频| 亚洲国产日韩视频观看| 噼里啪啦电影在线观看免费高清| 亚洲精品视频久久| 亚洲欧洲免费无码| 国产精品亚洲lv粉色| 免费一级毛片一级毛片aa| 国产免费久久精品99久久| 亚洲AV永久无码精品成人| 57pao一国产成视频永久免费| 337p日本欧洲亚洲大胆色噜噜| 亚洲高清中文字幕免费| 亚洲狠狠色丁香婷婷综合| 国产麻豆剧传媒精品国产免费 | 亚洲最大福利视频网站| 最近2019免费中文字幕6| 亚洲AV无码久久久久网站蜜桃| 天堂在线免费观看中文版| 免费人成又黄又爽的视频在线电影| 亚洲第一页日韩专区| 日韩a级无码免费视频| 亚洲电影唐人社一区二区| 免费视频淫片aa毛片| A国产一区二区免费入口| 久久精品国产亚洲AV麻豆网站| 成人无码区免费视频观看| gogo免费在线观看| 亚洲视频一区在线观看| 免费观看理论片毛片| a级片免费在线播放| 亚洲国产成+人+综合| 亚洲精品成a人在线观看| 最刺激黄a大片免费网站| 亚洲www在线观看| 亚洲国产a级视频| 99久久人妻精品免费二区| 亚洲精品无码aⅴ中文字幕蜜桃|