@EnableTransactionManagement
会扫描@Transactional
的所有Spring Bean,以便提供交易管理。
是否可以提供将要扫描的包列表?
例如:我希望在@Transactional
包中支持a.b.c
,但我想忽略包@Transactional
中标有x.y.z
的类。
这种wird要求的原因是3方lib。几乎每个类都有@Transactional(readonly=false)
,但它只进行内存操作。每次当我调用这个API时,spring都会获得数据库连接,而我真的需要避免这种情况。我想从事务管理中排除整个lib。我也无法为这个lib创建单独的spring上下文。
答案 0 :(得分:0)
据我所知,您可以在配置文件中定义自定义事务管理器: 示例:
<tx:annotation-driven transaction-manager="txManagerRest" proxy-target-class="true"/>
<bean id="txManagerRest" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSourceRest"/>
</bean>
然后,您可以在希望此自定义事务管理器的类中设置:
@Transactional("txName")
或
@Transactional(value = "txName")
通过这种方式,您可以在任意位置使用事务。 此外,您现在可以拥有任意数量的事务管理器,并在您需要的任何地方使用它。