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

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

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

    java學習

    java學習

     

    ApplicationContextAware接口的作用

    加載Spring配置文件時,如果Spring配置文件中所定義的Bean類實現了ApplicationContextAware 接口,那么在加載Spring配置文件時,會自動調用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 解決

    解決  回復  更多評論   


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


    網站導航:
     

    導航

    統計

    常用鏈接

    留言簿

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产啪亚洲国产精品无码 | 永久免费bbbbbb视频| 亚洲免费综合色在线视频| 亚洲一级特黄大片在线观看| 久久免费区一区二区三波多野| 亚洲精品国产精品国自产网站| 亚洲成AⅤ人影院在线观看| 日韩精品无码免费一区二区三区| 亚洲人成图片网站| 伊人久久大香线蕉亚洲| 国产精品色拉拉免费看| 无忧传媒视频免费观看入口| 亚洲日本中文字幕区| 国产a不卡片精品免费观看| 99在线热视频只有精品免费| 美国毛片亚洲社区在线观看| 亚洲精品无码不卡| 亚洲av高清在线观看一区二区| 亚洲黄色免费观看| aaa毛片视频免费观看| 亚洲精品无码国产片| 精品日韩亚洲AV无码一区二区三区 | 日本一道本高清免费| 久久久久久夜精品精品免费啦| 午夜亚洲国产精品福利| 亚洲黄色网站视频| 中文字幕一精品亚洲无线一区| 成年女人毛片免费播放人| 日韩午夜理论免费TV影院| 特级毛片aaaa免费观看| 亚洲一久久久久久久久| 77777_亚洲午夜久久多人| 国产成人综合亚洲亚洲国产第一页| 最近的中文字幕大全免费版| 三年片在线观看免费观看大全动漫| 日本中文字幕免费看| 亚洲色大成网站www永久网站| 99人中文字幕亚洲区| 亚洲国产精品VA在线观看麻豆| 天堂亚洲免费视频| 国产免费人视频在线观看免费 |