spring配置文件:简化Spring(1)--配置文件

  序

  人人都爱Spring加Hibernate

  但Spring MVC+hibernateSample如Appfuse代码却算不得最简洁优美好读如果在自己项目中继续发挥我们最擅长依样画葫芦大法美好愿望未必会实现

  所以Pramatic精神不灭这个系列就是探寻最适合自己Spring+Hibernate模式

  I-配置文件简化

  我厌倦切配置文件繁重框架

  最好情况是框架提供极端灵活复杂配置方式但只在你需要时候

  Spring提供了 3种可能来简化XML随着国内用户水平提高这些基本简化窍门技巧大家都已掌握

  大家可以直接看第3第4点--Spring 1.2, Spring 2.0后继改进

  1.1.autowire="byName" /"byType"

  假设Controller有个属性名为customerDAOSpring就会在配置文件里查找有没有名字为CustomerDAObean, 自动为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" ="org.springside.bookstore.web.CustomerController" autowire="byName"/>

  2.DAO也只剩

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

  3.Service类只剩下5行

 <bean id="customerManager" parent="baseTxService">
    <property name="target">
      <bean ="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默认配置和JDK5annotation逼得不行当然就要继续求变

  比如有好事者认为节点名必须以bean打头附加个属性id来表示bean名;属性值必须搞个property子节点子节点上有个属性name来表示属性名是给机器看很不直观东西 <bean id="customerDAO"="org.springside...CustomerDAO">
<property name="maxCount" value="10">
</bean>




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

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

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

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

  6.还有更变态简化配置思路方法

  比如autoproxy不过我觉得更简化就不可控了所以没有采用



Tags:  spring配置 spring配置文件详解 spring的配置文件 spring配置文件

延伸阅读

最新评论

发表评论