com*_*tta 12 java spring jpa transactional
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="data.emf" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager2" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="data.emf" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager2" />
Run Code Online (Sandbox Code Playgroud)
在我的服务层中,@Transactional(name="transactionManager2");
如果我有多个事务管理器,我可以使用它来识别我使用的事务管理器吗?
ska*_*man 22
您可以@Transactional
使用该value
属性指定要使用的tx管理器:
指定事务的限定符值.
可用于确定目标事务管理器,匹配特定PlatformTransactionManager bean定义的限定符值(或bean名称).
例如:
@Transactional("txManager1");
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用更明确的TransactionProxyFactoryBean
,这使您可以更精细地控制哪些对象被tx管理器代理.这仍然使用注释,但它不会自动检测bean,它是在逐个bean的基础上显式配置的.
这通常不是问题,但除非您有充分的理由这样做,否则拥有多个事务管理器并不明智.如果你发现自己需要两个tx管理员,通常最好是看看你是否可以做一个.例如,如果您在应用服务器中配置了两个数据源,则可以将它们合并到一个JtaTransactionManager中,而不是两个单独的JpaTransactionManager
或DataSourceTransactionmanagers
.
归档时间: |
|
查看次数: |
25380 次 |
最近记录: |