锁定老帖子 主题:有办法简化spring中的事务管理配置吗
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2005-01-07
看过之过大受启发。有一个疑问,每一个service bean还是要作一次声明注册,能不能将所需的service bean统一放到一个list列表中,这样有每增加一个service bean时只需增加其中的一个元素,而不用再写一个完整的注册。
|
|
返回顶楼 | |
发表时间:2005-01-09
但如果ItemService含有除CRUD之外的业务方法怎么办?
看起来还是要重新定义一次所有的CRUD和ad hoc的业务方法. 因为Trastion-attributes节点被覆盖了. 如果大部分ItemService都含有特殊命名的业务方法,这个抽象的父类基本上就没用了. |
|
返回顶楼 | |
发表时间:2005-01-14
这是我的配置文件
<bean id="baseTxProxy" abstract="true" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager" > <ref bean="transactionManager" /> </property> <property name="transactionAttributes" > <props> <prop key="*" >PROPAGATION_REQUIRED</prop> </props> </property> </bean> 在这条上老是出现一下错误 “Attribute "abstract" must be declared for element type "bean".”。怀疑是DTD不对,可是我的DOC定义是按照Spring-beans.dtd中要求的写的啊,如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 难道还有其他地方错误吗?不知道你们是怎么配置成功的。 |
|
返回顶楼 | |
发表时间:2005-01-14
ying_7839 写道 这是我的配置文件
<bean id="baseTxProxy" abstract="true" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager" > <ref bean="transactionManager" /> </property> <property name="transactionAttributes" > <props> <prop key="*" >PROPAGATION_REQUIRED</prop> </props> </property> </bean> 在这条上老是出现一下错误 “Attribute "abstract" must be declared for element type "bean".”。怀疑是DTD不对,可是我的DOC定义是按照Spring-beans.dtd中要求的写的啊,如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 难道还有其他地方错误吗?不知道你们是怎么配置成功的。 可能是spring IDE 的版本太低了,升级试试。我用1.1.0的版本没有这个问题。 |
|
返回顶楼 | |
发表时间:2005-01-14
de3light 写道 可能是spring IDE 的版本太低了,升级试试。我用1.1.0的版本没有这个问题。 1.1.0?我查了Spring的网站,上面最新的时1.0.3呀,我就是用的这个版本,怎么会有1.1.0,你从那里下的啊?谢谢! |
|
返回顶楼 | |
发表时间:2005-01-14
ying_7839 写道 de3light 写道 可能是spring IDE 的版本太低了,升级试试。我用1.1.0的版本没有这个问题。 1.1.0?我查了Spring的网站,上面最新的时1.0.3呀,我就是用的这个版本,怎么会有1.1.0,你从那里下的啊?谢谢! 呵呵,是没有正式release。我现在就用着,感觉还好,没发现什么严重的bug。地址是http://springide-eclip.sourceforge.net/updatesite/,用eclipse 的在线方式安装。我用的是eclipse 3,不知道eclipse 2.1.3能不能用,没试过。 |
|
返回顶楼 | |
发表时间:2005-01-14
多谢de3light的热心帮助!果然是IDE的版本太低了,升级后就没有这个问题了。
|
|
返回顶楼 | |
发表时间:2005-03-29
我升级后依然同样的问题
|
|
返回顶楼 | |
发表时间:2005-03-29
只要使用abstract就会报错
|
|
返回顶楼 | |
发表时间:2005-04-04
我是这样做的,定义一个TransactionInterceptor然后每个用到事务的来拦截一下,不过一直不知道这种做法和TransactionProxyFactoryBean有什么区别,哪位达人可以告我一下么?
<!-- ====================以下是为了定义一个transactionInterceptor============= --> <bean id="txAttributes" class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource"> <property name="properties"> <value> *=PROPAGATION_REQUIRED </value> </property> </bean> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager"> <ref bean="transactionManager"/> </property> <property name="transactionAttributeSource"> <ref bean="txAttributes"/> </property> </bean> <!-- ====================以上是为了定义一个transactionInterceptor============= --> <bean id="propertyDAO" class="xxx.dao.PropertyDAO"> <property name="sessionFactory"> <ref local="sessionFactory"/> </property> </bean> <bean id="SystemManager" class="xxx.logic.SystemManager"> <property name="PropertyDAO"> <ref local="propertyDAO"/> </property> </bean> <bean id="SystemManagerProxy" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="target"> <ref local="SystemManager"/> </property> <property name="interceptorNames"> <list> <value>transactionInterceptor</value> </list> </property> </bean> 我这样做是把事务管理放在DAO层之上的逻辑层做的,当然也可以直接放在DAO层,就是把那个transationInterceptor注入DAO的proxy就可以了 |
|
返回顶楼 | |