我需要使用自定義AnnotationTransactionAttributeSource爲了攔截事務屬性。現在,我使用TransactionInterceptor執行此操作,並在TransactionAttributeSourceAdvisor中注入此代理。使用DefaultAdvisorAutoProxyCreator創建代理,如下所示。使用自定義AnnotationTransactionAttributeSource tx:註釋驅動
<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。有什麼辦法可以強制使用Tx:註解驅動來使用我的CustomAnnotationTransactionAttributeSource,這樣我就可以避免所有這些配置? 。我在其中一篇文章中讀到,這可以通過使用BeanPostProcessors來完成,但不知道如何在這種情況下使用它。
正是我所需要的。謝謝 。 –
只是爲了記錄,當使用' '東西時,您並不直接定義'AnnotationTransactionAttributeSource' bean,但這似乎可以取代默認獲取的bean。謝謝! –
Gray
我經歷了控制流沒有從'getBeanNamesForType'返回。使用'getBeanNamesForType'和其他參數false和false解決了這個問題。 – mm759