本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7590982
建立时间:2006年5月29日




[Spring]简化Spring配置文件
软件技术

lhwork 发表于 2006/12/15 9:51:15

转自: http://www.blogjava.net/calvin/archive/2005/08/21/10530.html作者:江南白衣 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">500)this.width=500'>     <value>fooValue</value>  </property>  简化为  <property name="foo" value="fooValue"/>500)this.width=500'>2.引用 bean500)this.width=500'><property name="foo">500)this.width=500'>   <ref bean="fooBean">500)this.width=500'></property>500)this.width=500'>简化为500)this.width=500'><property name="foo" ref="fooBean"/>3. list可以简化为空格分开的字符串  500)this.width=500'><property name="myFriendList">500)this.width=500'>  <list>500)this.width=500'>     <value>gigix</value>        <value>wuyu</value>500)this.width=500'>  </list>500)this.width=500'></property>500)this.width=500'>简化为500)this.width=500'><property name="myFriendList" value="gigix wuyu"/>500)this.width=500'>     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。


阅读全文(1676) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.330 second(s), page refreshed 144762955 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号