花钱的年华

--今天开始成为主站

用户操作
[即时聊天] [发私信] [加为好友]
江南白衣ID:calvinxiu
691445次访问,排名53好友0人,关注者38
calvinxiu的文章
原创 161 篇
翻译 0 篇
转载 0 篇
评论 646 篇
江南白衣的公告

肖桦,江南白衣,
开源项目SpringSide
春天的旁边
发起者

最近评论
calvinxiu:
发版本最痛苦的事情,就是刚发完之后忽然又有了一个比较重要的更新。

推荐大家下载3.0.3.1 (2mb)

1.简化了目录结构,感觉又清爽了不少。
2.消除了最后一块需要逐个Class写配置文件的地方(applicationContext.xml中的sessionFactory的mapping class)。
dreaming:恭喜~
hongyi:还是一头雾水,郁闷,为啥有这么多东东,叫人头大
suncheng_hong:用过appfuse,但springside还没有尝试过。
suncheng_hong:很想尝试一下。
文章分类
    收藏
      相册
      Blog用图
      Friends
      @_@
      Anders小明
      buaawhl
      cac
      canonical
      cctvx1
      david.turing
      femto
      g9
      JohnsonQu
      Michael Chen
      Raimundox
      robbin
      SimonLei
      totodo
      wuyu
      周爱民
      孟岩
      差沙
      庄表伟
      落魄的程序员
      透明
      郁也风
      铁手
      银狐999
      飞云小侠
      存档
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 简化Spring(1)--配置文件收藏

      新一篇: 简化Spring(2)--Model层  | 旧一篇: 扩展Spring系列(2) ---Spring对各种数据访问框架的集成机制

      作者:江南白衣 
         
                                 

          人人都爱Spring加Hibernate。
          但Spring MVC+hibernate的Sample如Appfuse的代码却算不得最简洁优美好读,如果在自己的项目中继续发挥我们最擅长的依样画葫芦大法,美好愿望未必会实现。
           所以,Pramatic精神不灭。这个系列就是探寻最适合自己的Spring+Hibernate模式。
          
                                    I-配置文件简化

           我厌倦一切配置文件繁重的框架。
           最好的情况是,框架提供极端灵活复杂的配置方式,但只在你需要的时候
       
           Spring提供了三种可能来简化XML。随着国内用户水平的提高,这些基本的简化技巧大家都已掌握。
           大家可以直接看第3,第4点--Spring 1.2, Spring 2.0的后继改进。

      1.1.autowire="byName" /"byType"

           假设Controller有一个属性名为customerDAO,Spring就会在配置文件里查找有没有名字为CustomerDAO的bean, 自动为Controller注入。
           如果bean有两个属性,一个想默认注入,一个想自定义,只要设定了autowire,然后显式的声明那个想自定义的,就可以达到要求。这就应了需求,在需要特别配置的时候就提供配置,否则给我一个默认注入。

           还有一个更懒的地方,在最最根部的<beans>节点写一句default-autovwrie="byName",可以让文件里的所有bean 都默认autowrie。
          不过Rod认为开发期可以这样,但Production Server上不应该使用Autowire。而我觉得那些自定义一次的地方比如TranscationManager应该详细定义,而Dao,Controller这种大量重复定义的bean就可以偷点懒了。

      1.2.<bean>节点之间抽象公共定义和 Inner Bean

          这太方便懒人了,想不到两个独立的XML节点都可以玩继承和派生,子节点拥有父节点的全部属性。
          最好用的地方就是那个Transtion Proxy的定义。先定义一个又长又冗的父类,然后用子类去继承它。
         
          另外,还有一个Inner Bean的机制,可以把DAO写成Proxy的内部类。为什么要写成内部类?为了让Proxy冒名顶替它去让Controller Autowire。(详见后面的示例)

      1.3. 宽松的配置, To XML or Not to XML 
          据说Spring比Struts的配置宽松了很多,这就给人把东西从配置文件中撤回原码中的机会。
          不赞成什么都往配置文件里晒,造成了Rich Information的配置文件,修改或者查看的时候,要同时打开配置文件和原码才能清楚一切。
          而我希望配置文件就集中做一些整体的配置,还有框架必须的、无需管理的冗余代码。而一些细节的变化不大的配置和逻辑,就尽量别往里塞了。因此,Success/Fail View 的配置,不建议放在里面。

      2.简化后的配置文件

      1.Controller只剩下一句

      <bean name="customerController" class="org.springside.bookstore.web.CustomerController" autowire="byName"/>

      2.DAO也只剩一句

      <bean id="customerDAO" class="org.springside.bookstore.dao.CustomerDao"/>

      3.Service类只剩下5行

        <bean id="customerManager" parent="baseTxService">
              
      <property name="target">
                  
      <bean class="org.springside.bookstore.service.CustomerManager"/>
              
      </property>
          
      </bean>

      3.Spring 1.2后xml语法简化

       
      最主要的简化是把属性值和引用bean从子节点变回了属性值,对不喜欢autowire的兄弟比较有用。
       当然,如果value要CDATA的时候还是要用子节点。另外,list的值可以用空格隔开也比较实用。

      1.属性值

        <property name="foo">
           
      <value>fooValue</value>
        </property>
        简化为
        <property name="foo" value="fooValue"/>

      2.引用 bean
      <property name="foo">
         
      <ref bean="fooBean">
      </property>
      简化为
      <property name="foo" ref="fooBean"/>


      3. list可以简化为空格分开的字符串
       
      <property name="myFriendList">
        
      <list>
           
      <value>gigix</value>
              <value>wuyu</value>
        
      </list>
      </property>
      简化为
      <property name="myFriendList" value="gigix wuyu"/>
         
        
      4.Spring 2.0来了
         如果没什么外力刺激,spring xml 可能就这样不会变了。但现在xml成了过街老鼠,被ror的默认配置和JDK5的annotation逼得不行,当然就要继续求变。
         比如有好事者认为,节点名必须以bean打头,附加一个属性id来表示bean名;属性值必须搞一个property子节点,子节点上有个属性name来表示属性名,是给机器看的很不直观的东西。
      <bean id="customerDAO" class="org.springside...CustomerDAO">
       
      <property name="maxCount" value="10">
      </bean>

      给人看的东西应该就写成
      <customerDAO class="org.springside....CustomerDAO" maxCount="10"/>

      Spring 2.0正用schema实现类似的语法,具体请看它的JPetStore sample。

      5.使用Spring自带的DTD使编辑器Smart.

          如果没有用Eclipse的Spring插件,那至少也要使用spring自带的dtd使XML编辑器smart一些,能够自动为你生成属性,判断节点/属性名称有没有拼错等。

      6.还有更变态的简化配置方法
          比如autoproxy,不过我觉得更简化就不可控了,所以没有采用。

      相关文章
      简化Spring(1)--配置文件
      简化Spring(2)--Model层
      简化Spring(3)--Controller层
      简化Spring(4)--View层

      发表于 @ 2005年09月13日 13:48:00|评论(loading...)|编辑

      新一篇: 简化Spring(2)--Model层  | 旧一篇: 扩展Spring系列(2) ---Spring对各种数据访问框架的集成机制

      评论:没有评论。

      发表评论  


      登录
      Csdn Blog version 3.1a
      Copyright © 江南白衣