乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      在程序中用new ClassPathXmlApplicationContext()的注意事項

       神志屋 2017-10-12

      問題背景:在我們的web程序中,用spring來管理各個實例(bean), 有時在程序中為了使用已被實例化的bean, 通常會用到這樣的代碼:

      1. ApplicationContext appContext =   
      2.           new ClassPathXmlApplicationContext("classpath:META-INF/spring/applicationContext-common.xml");  
      3.     ApplicationContext appContext=appContextUtil.getContext();  
      4.     ProjectServiceFacade projectServiceFacade=(ProjectServiceFacade)appContext.getBean("biz.projectServiceFacade");  

      上述的代碼會帶來一個問題:因為它會重新裝載applicationContext-common.xml并實例化上下文bean, 如果有些線程配置類也是在這個配置文件中,那么會造成做相同工作的的線程會被啟兩次。一次是web容器初始化時啟動,另一次是上述代碼顯示的實例化了一次。這在業(yè)務上是要避免的。

      解決方法:不用類似new ClassPathXmlApplicationContext()的方式,從已有的spring上下文取得已實例化的bean。

      具體步驟:1)增加一個ApplicationContextUtil類,用來取得上下文ApplicationContext

      1. public class ApplicationContextUtil implements ApplicationContextAware {  
      2.   
      3.     private  ApplicationContext context;//聲明一個靜態(tài)變量保存  
      4.     @Override  
      5.     public void setApplicationContext(ApplicationContext applicationContext)  
      6.             throws BeansException {  
      7.         this.context=applicationContext;  
      8.     }  
      9.   
      10.     public  ApplicationContext getContext(){  
      11.           return context;  
      12.     }  
      13. }  


      2) 對ApplicationContextUtil類增加 Spring配置,讓Spring完成此工具類的裝載并且完成applicationcontext上下文的注入;applicationContext-common.xml配置如下:

      1.   
      1. //初始化appliationUtil類,并完成ApplicationContext的注入  
      1. <bean id="applicationContextUtil" class="com.service.utils.ApplicationContextUtil"></bean>  
      1. //對業(yè)務類注入ApplicationContextUtil實例  
      1. <bean id="workSignCheckJob" class="com.service.tools.quartz.WorkSignCheckJob" >  
      2.   <property name="appContextUtil" ref="applicationContextUtil" />   
      3.  </bean>  
      4.    

      3)業(yè)務類調用代碼如下:

      1. ApplicationContext appContext=appContextUtil.getContext();  
      2.  ProjectServiceFacade projectServiceFacade=(ProjectServiceFacade)appContext.getBean("biz.projectServiceFacade");  
      3.     WorkSignService workSignService=(WorkSignService)appContext.getBean("biz.workSignService");   



       

       

       


        

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多