使用自定义AnnotationTransactionAttributeSource与TX:注解驱动

使用自定义AnnotationTransactionAttributeSource与TX:注解驱动


我需要为了拦截事务属性自定义AnnotationTransactionAttributeSource。现在,我做的TransactionInterceptor和TransactionAttributeSourceAdvisor注入本该代理人可DefaultAdvisorAutoProxyCreator的下面给出。
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>

<bean class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
 <property name="transactionInterceptor" ref="txInterceptor"/>
</bean>

<bean id="txInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
 <property name="transactionManager" ref="txManager"/>
 <property name="transactionAttributeSource"> 
  <bean class="org.myProject.transaction.CustomAnnotationTransactionAttributeSource"/>
 </property>
</bean>

在这里,CustomAnnotationTransactionAttributeSource延伸AnnotationTransactionAttributeSource。有没有什么办法可以强制发送:注解驱动我的CustomAnnotationTransactionAttributeSource这样我就可以避开所有这些配置? 。我读的文章,这可能是做BeanPostProcessor可以,但不知道它是如何对这种情况下的一个。
本文地址 :CodeGo.net/385957/

-------------------------------------------------------------------------------------------------------------------------

1. <tx:annotation-driven>什么都不做的魔法,它只是登记几乎bean定义你手动设置(参见 AnnotationDrivenBeanDefinitionParser)。 所以,你可以替换引用 AnnotationTransactionAttributeSource其他豆类,或更换其定义类属性。后者看起来simplier(尽管更脆弱相对于变化的弹簧代码),并且可以通过下面的做 BeanFactoryPostProcessor
public class AnnotationTransactionAttributeSourceReplacer implements BeanFactoryPostProcessor {
 public void postProcessBeanFactory(ConfigurableListableBeanFactory factory)
   throws BeansException {

  String[] names = factory.getBeanNamesForType(AnnotationTransactionAttributeSource.class);

  for (String name: names) {
   BeanDefinition bd = factory.getBeanDefinition(name);
   bd.setBeanClassName("org.myProject.transaction.CustomAnnotationTransactionAttributeSource");
  }   
 }  
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值