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

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

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

    隨筆 - 115  文章 - 481  trackbacks - 0
    <2007年8月>
    2930311234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    常用鏈接

    留言簿(19)

    隨筆檔案(115)

    文章檔案(4)

    新聞檔案(1)

    成員連接

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

      在JavaEE乃至其它的java應用程序中,容器顯得非常重要。web容器、applet容器、EJB容器等,可謂容器無處不在。
      從程序員的角度來說,IOC容器是一個非常好的東西,他能使得我們非常靈活的管理組件及依賴關系??梢院敛豢鋸埖卣f,Spring就是靠著一套功能全面、靈活的IOC容器發家致富的。作為EasyJWeb特性系列的第五篇文章,我們來看看EasyJWeb中的IOC容器的特點。
      如果您看過EasyJWeb1.0的簡介,就會發現他不僅僅是一個MVC。為了實現業務對象的很好管理,供核心MVC調用,在EasyJWeb中,我們提供了一個超級IOC容器。這個“超級”體現在,他屬于容器中的容器,他可以容納其它各種優秀的容器,并把這些各自獨立的容器中的個體根據需要有機銜接配合起來,完成我們所需要做的事。
      當然,EasyJWeb自己也提供了一個簡單的IOC容器,如果你不想或者沒接觸過其它的容器,那么你完全可以只用EasyJWeb的IOC容器,一樣能寫出非常優雅、松藕合的JavaEE應用。 
    容器的使用非常簡單,而且是完全可配置的,你可以根據需要把Spring容器、Guice容器、甚至EJB容器都納入到EasyJWeb的SuperContainer中來。讓他們在各自專業的領域里,為你工作??创a:

     @Inject(name="personDao")
     
    private GenericDAO<Person> dao;
    public void setDao(GenericDAO<Person> dao) {
      
    this.dao = dao;
     }

      在上面的CrudAction示例中,PersonAction需要一個DAO才能工作,在這里我們聲明使用的是GenericDAO<Person>,那么這個DAO在程序具體運行的過程中從哪兒來的,存放在哪兒?EasyJWeb都不關心這些事,你只需要通過@Inject這個標簽,告訴我們要從超級IOC容器中啟一個名叫personDao的對象。這樣在程序運行的過程中,EasyJWeb會從超級IOC容器中查找名為personDao的對象,并注入到這個Action中,從而使得我們的Action能正常工作。
      實現依賴注入及控制反轉,這不是什么奇特的事,每一個IOC框架都能實現這個功能。而不一樣的是,EasyJWeb不但能從自己的IOC容器中得到依賴對象,而且也可以從任何其它的IOC容器中得到這個對象。比如我們可以在Spring容器中配置這個personDao,或者是使用Guice來管理這個personDao,乃至直接把這個personDao存放在另外一個服務器的EJB容器中。EasyJWeb會自動到這些地方去查找,并能把他們協調起來。
      有了超級IOC容器,系統管理員不再擔心我們業務邏輯層組件的管理,老板也不需要擔心在需要更換IOC容器所發生的移植成本。
      EasyJWeb的IOC容器同樣實現了自動按名稱、按類別等注入,另外還實現了不同生命周期范圍的Bean管理。在默認的情況下,支持singleton、prototype、session、request等類型的Bean。
      另外,在EasyJWeb中,包括中央處理器RequestProcessor、驗證器Validator、異常處理器ExceptionHandler在類的這些底層核心組件,都是通過EasyJWeb的超級容器來管理的。因此,你可以非常容易地根據自己的需要,更換EasyJWeb的一些部件。
      下面是在EasyJWeb超級容器中加入Spring容器的配置:

    <bean name="springContainer"
       class
    ="org.springframework.web.context.support.XmlWebApplicationContext">
       
    <property name="configLocations">    
        
    <list>
         
    <value>WEB-INF/classes/application.xml</value>
        
    </list>
       
    </property>
      
    </bean>
      
    <bean name="innerSpringContainer"
       class
    ="com.easyjf.container.impl.SpringContainer">
       
    <property name="factory" ref="springContainer" />
      
    </bean>

     

    可以在Spring容器中配置EasyJWeb的中央處理器,甚至可以配置事務等,如下面的Spring配置文件:
     

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:aop
    ="http://www.springframework.org/schema/aop"
     xmlns:tx
    ="http://www.springframework.org/schema/tx"
     xsi:schemaLocation
    ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"
    > 
     
    <import resource="jpa-base.xml"/>
     
    <import resource="service.xml"/>
     
    <import resource="dao.xml"/>
     
    <aop:config>
      
    <aop:pointcut id="easyjwebProcessor"
       expression
    ="execution(* com.easyjf.web.RequestProcessor.process(..))" />
      
    <aop:advisor advice-ref="txEasyjwebProcessorAdvice"
       pointcut-ref
    ="easyjwebProcessor" />
     
    </aop:config>
     
    <tx:advice id="txEasyjwebProcessorAdvice"
      transaction-manager
    ="transactionManager">
      
    <tx:attributes>
       
    <tx:method name="*" propagation="REQUIRED" read-only="true" />
      
    </tx:attributes>
     
    </tx:advice>
     
    <bean name="EasyJWeb-Processor" class="com.easyjf.web.core.DefaultRequestProcessor"/>
    </beans> 


    posted on 2007-08-16 10:51 簡易java框架 閱讀(747) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲日本一区二区三区在线| 97久久免费视频| 麻豆狠色伊人亚洲综合网站| 在线免费观看h片| 99精品视频在线观看免费专区 | 亚洲av片劲爆在线观看| 亚洲成色WWW久久网站| 国产一级高青免费| 国产亚洲综合成人91精品| 中文字幕手机在线免费看电影| 国产亚洲精品资在线| 久久久久亚洲AV片无码下载蜜桃 | aⅴ在线免费观看| 国产精品亚洲专区在线观看| 歪歪漫画在线观看官网免费阅读| 亚洲中文久久精品无码1| 成人免费在线观看网站| 亚洲夜夜欢A∨一区二区三区| 中文字幕看片在线a免费| 亚洲va久久久噜噜噜久久天堂| 亚洲中文字幕无码爆乳app| 男女午夜24式免费视频| 亚洲综合精品一二三区在线| 国产精品色拉拉免费看| 在线精品亚洲一区二区| 亚洲 综合 国产 欧洲 丝袜| 亚洲国产人成在线观看69网站| 精品无码人妻一区二区免费蜜桃| 亚洲国产日韩在线成人蜜芽| 午夜爱爱免费视频| jzzjzz免费观看大片免费| 亚洲AV无码一区东京热久久| www.黄色免费网站| 四虎永久在线精品免费一区二区| 国产亚洲免费的视频看| 国产福利在线免费| 一级看片免费视频囗交| 亚洲精品无码久久不卡| 久久爰www免费人成| 亚洲av无码成人精品区一本二本| 亚洲综合区小说区激情区|