隨筆-4  評(píng)論-14  文章-0  trackbacks-0
          EasyJWeb中提供了一些注解,可以給開發(fā)帶來很多方便。這些注解包括有數(shù)據(jù)驗(yàn)證用的@FormPO、@Validator等;IOC注入用的@Inject、@InjectDisable等;action配置用的@Action等。
          今天我們來說說action配置時(shí)要用的注解@Action,使用這些注解可以大量減少配置文件的編寫。
          首先,我們來看看不使用這些注解的時(shí)候是怎么做的,以一個(gè)hello world程序?yàn)槔?br /> 首先是action:
          public class HelloAction extends AbstractCmdAction
          {
              
          private IHelloService servie;

              
          public IHelloService setService(IHelloService service){
                  
          this.service = service;
              }


              
          public Page doHello(WebForm form, Module module){
                  System.out.println(service.sayHello());
                  
          return null;
              }

          }

          service:
          public interface IHelloService{
              String sayHello();
          }

          service實(shí)現(xiàn):
          public class HelloServiceImpl implements IHelloService
          {
              
          public String sayHello(){
                  
          return "hello";
              }

          }

          如果要使這個(gè)程序正常運(yùn)行,我們還需要配置service和action,easyjweb中默認(rèn)集成spring,service是在spring的配置文件中配置:
              <bean id="helloService"    class="com.hello.service.impl.HelloServiceImpl">
              
          </bean>

          現(xiàn)在來配置action,在easyjweb的配置文件中這樣配置:
                  <module name="hello" path="/hello" form="" scope="request"
                      action
          ="com.hello.mvc.HelloAction" defaultPage="list"
                      inject
          ="byType">

                  
          </module>
          這里說說這個(gè)inject="byType",這樣配置之后在HelloAction中的屬性會(huì)自動(dòng)根據(jù)類型來注入。inject還有byName等屬性,意思就是根據(jù)名字來注入。如果這里不加這個(gè)inject,那么配置文件就應(yīng)該是這樣寫:
                  <module name="hello" path="/hello" form="" scope="request"
                      action
          ="com.hello.mvc.HelloAction" defaultPage="list"
                      inject
          ="byType">
               
          <property name="service" ref="helloService" />
                  
          </module>
          property的name屬性對(duì)應(yīng)HelloAction中的service,名字要保持一致。ref對(duì)應(yīng)上面在spring中配置的helloService的id。
          到這里,這個(gè)程序就可以運(yùn)行了。
          一個(gè)簡(jiǎn)單的hello程序就用了這么多配置文件,這讓人難以忍受。現(xiàn)在我們就來說說怎么使用EasyJWeb的注解來簡(jiǎn)化配置。
          我們修改一下HelloAction的代碼,給這個(gè)類加上一個(gè)@Action注解:
          @Action(path="hello")
          public class HelloAction extends AbstractCmdAction
          {
              
          private IHelloService servie;

              
          public IHelloService setService(IHelloService service){
                  
          this.service = service;
              }


              
          public Page doHello(WebForm form, Module module){
                  System.out.println(service.sayHello());
                  
          return null;
              }

          }

          這樣一來,我們就不需要easyjweb中配置的module了,當(dāng)使用hello.ejf訪問的時(shí)候框架會(huì)自動(dòng)把請(qǐng)求交給HelloAction處理。
          現(xiàn)在來簡(jiǎn)單介紹一下@Action這個(gè)注解。
          @Action的各個(gè)屬性說明如下:
          name用來指Action的名稱,也是在容器中的Bean名稱,我們一般不使用這個(gè)屬性。
          path用來指定模塊的path值,也即所映射的url,如果不設(shè)值該值將會(huì)按照缺省的方式處理。
          alias用來指定這個(gè)模塊的path別名,也就是可以使用其它的一個(gè)或多個(gè)名稱來訪問這個(gè)模塊。
          inject用來指定Action中所有業(yè)務(wù)組件注入方式,默認(rèn)值為按類型注入。如果為byName則表示按名稱注入,auto表示自動(dòng)按名稱或類別注入,none則表示不注入。
          disInject用來標(biāo)識(shí)不自動(dòng)注入的屬性。
          autoInject用來標(biāo)識(shí)允許自動(dòng)注入的屬性。
          autoToken表示該模塊是否需要開取自動(dòng)防重復(fù)提交功能;
          validate表示該模塊是否開取自動(dòng)驗(yàn)證功能,默認(rèn)情況不開啟自動(dòng)驗(yàn)證;
          view表示該模板的視圖存放子目錄。
          scope用來指定這個(gè)Action在容器中的創(chuàng)建方式及生命周期,默認(rèn)值為request,表示每次請(qǐng)求創(chuàng)建一次該對(duì)象,若為session則表示個(gè)用戶會(huì)話創(chuàng)建一個(gè)對(duì)象,若為singleton表示整個(gè)容器中只創(chuàng)建一次該實(shí)例。
          messageResource表示多國語言屬性文件的存放子目錄。
          通常我們只用到path、view、inject這幾個(gè)屬性,由于inject的默認(rèn)值為"AutoJnjectByType",是最常用的,因此通常也不需要顯式指定這個(gè)屬性值。而disInject是用來標(biāo)識(shí)不允許注入的屬性的,當(dāng)我們的action出現(xiàn)了一些不需要注入的屬性時(shí),如logger,我們就需要使用這個(gè)屬性來指定哪些是不需要注入的。autoToken則是標(biāo)識(shí)是否開啟防重復(fù)提交功能的。

          posted on 2007-12-28 13:36 天 一 閱讀(1206) 評(píng)論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          <2007年12月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 瓮安县| 曲周县| 遵义市| 泾川县| 桃园市| 两当县| 绥阳县| 修水县| 洛南县| 星子县| 崇礼县| 泰宁县| 新和县| 江阴市| 射洪县| 麦盖提县| 故城县| 广汉市| 万山特区| 安塞县| 兴安盟| 沈丘县| 江永县| 阳信县| 资兴市| 阳东县| 东山县| 新乐市| 江达县| 青川县| 奉化市| 措勤县| 云和县| 镶黄旗| 鹰潭市| 平果县| 肃南| 新乡县| 蒙自县| 察隅县| 卢龙县|