论坛首页 Java企业应用论坛

有办法简化spring中的事务管理配置吗

浏览 45495 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-01-07  
看过之过大受启发。有一个疑问,每一个service  bean还是要作一次声明注册,能不能将所需的service bean统一放到一个list列表中,这样有每增加一个service bean时只需增加其中的一个元素,而不用再写一个完整的注册。
0 请登录后投票
   发表时间:2005-01-09  
但如果ItemService含有除CRUD之外的业务方法怎么办?
看起来还是要重新定义一次所有的CRUD和ad hoc的业务方法.
因为Trastion-attributes节点被覆盖了.

如果大部分ItemService都含有特殊命名的业务方法,这个抽象的父类基本上就没用了.
0 请登录后投票
   发表时间: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">

难道还有其他地方错误吗?不知道你们是怎么配置成功的。
0 请登录后投票
   发表时间: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的版本没有这个问题。
0 请登录后投票
   发表时间:2005-01-14  
de3light 写道

可能是spring IDE  的版本太低了,升级试试。我用1.1.0的版本没有这个问题。


1.1.0?我查了Spring的网站,上面最新的时1.0.3呀,我就是用的这个版本,怎么会有1.1.0,你从那里下的啊?谢谢!
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能不能用,没试过。
0 请登录后投票
   发表时间:2005-01-14  
多谢de3light的热心帮助!果然是IDE的版本太低了,升级后就没有这个问题了。
0 请登录后投票
   发表时间:2005-03-29  
我升级后依然同样的问题
0 请登录后投票
   发表时间:2005-03-29  
只要使用abstract就会报错
0 请登录后投票
   发表时间: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就可以了
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics