眾所周知RoR裡面的指導原則有
第一條是較小的軟件這意味著你編寫較少的程序行程序小就能加速開發錯誤也較少使得程序較容易理解維護和增強對編寫較小程序做出貢獻的Ruby的一個特性就是它假設該架構本身能夠並應該處理元數據
第二條是對配置的協定原理這意味著Rails不用配置文件而是依靠一些簡單的編程協定讓它通過利用應用程序已有的信息和在運行的數據庫解決它需要知道什麼這個問題
Spring一個非常靈活的一個框架靈活的同時也造成了一定的復雜性我個人眼中的spring應該從RoR學到的東西應該有不用寫一行xml語句就可以配置好AOP常規的事務管理約定高於配置
當前spring支持的事務管理配置大體有以下兩種配置方式為了方便舉例子所以借用了javaEE技術專家江南白衣的兩段代碼
()spring版本支持的事務管理
代碼
<bean id=baseTxService class=orgspringframeworktransactioninterceptorTransactionProxyFactoryBean
abstract=true>
<property name=transactionManager ref=transactionManager/>
<property name=proxyTargetClass value=true/>
<property name=transactionAttributes>
<props>
<prop key=get*>PROPAGATION_REQUIREDreadOnly</prop>
<prop key=find*>PROPAGATION_REQUIREDreadOnly</prop>
<prop key=save*>PROPAGATION_REQUIRED</prop>
<prop key=remove*>PROPAGATION_REQUIRED</prop>
</props>
</property>
<property name=preInterceptors>
<list>
<ref bean=methodSecurityInterceptor/>
</list>
</property>
</bean>
<bean id=bookManager parent=baseTxService>
<property name=target>
<bean class=orgspringsidebookstoreadminmanagerBookManager/>
</property>
</bean>
() spring開始支持事務管理的新配置
代碼
<aop:config proxy
target
class=
true
>
<aop:advisor pointcut=
execution(*yourpackagename
*Manager
*(
))
advice
ref=
txAdvice
/>
<aop:advisor pointcut=
execution(*yourpackagename
*Manager
save(
))
advice
ref=
fooAdvice
/>
</aop:config><tx:advice id=
txAdvice
transaction
manager=
transactionManager
>
<tx:attributes>
<tx:method name=
save*
/>
<tx:method name=
remove*
/>
<tx:method name=
*
read
only=
true
/>
</tx:attributes>
</tx:advice>
<bean id=
bookManager
class=
org
springside
bookstore
commons
service
BookManager
/>
[] []
From:http://tw.wingwit.com/Article/program/Java/ky/201311/29081.html