|
1 | 1 | package com.codingapi.txlcn.demo.service1; |
2 | 2 |
|
3 | | -import com.codingapi.txlcn.tc.aspect.interceptor.DTXInterceptor; |
| 3 | +import com.codingapi.txlcn.common.util.Transactions; |
| 4 | +import com.codingapi.txlcn.tc.aspect.interceptor.TxLcnInterceptor; |
4 | 5 | import com.codingapi.txlcn.tc.aspect.weave.DTXLogicWeaver; |
5 | 6 | import org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator; |
6 | 7 | import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; |
7 | | -import org.springframework.boot.autoconfigure.transaction.TransactionProperties; |
8 | | -import org.springframework.boot.context.properties.EnableConfigurationProperties; |
| 8 | +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; |
9 | 9 | import org.springframework.context.annotation.Bean; |
10 | 10 | import org.springframework.context.annotation.Configuration; |
11 | 11 | import org.springframework.transaction.PlatformTransactionManager; |
|
22 | 22 | */ |
23 | 23 | @Configuration |
24 | 24 | @EnableTransactionManagement |
25 | | -@EnableConfigurationProperties(TransactionProperties.class) |
26 | 25 | public class TransactionConfiguration { |
27 | 26 |
|
28 | | - @ConditionalOnBean(DTXLogicWeaver.class) |
| 27 | + /** |
| 28 | + * 本地事务配置 |
| 29 | + * @param transactionManager |
| 30 | + * @return |
| 31 | + */ |
29 | 32 | @Bean |
30 | | - public TransactionInterceptor transactionInterceptor(PlatformTransactionManager transactionManager, DTXLogicWeaver dtxLogicWeaver) { |
| 33 | + @ConditionalOnMissingBean |
| 34 | + public TransactionInterceptor transactionInterceptor(PlatformTransactionManager transactionManager) { |
31 | 35 | Properties properties = new Properties(); |
32 | 36 | properties.setProperty("*", "PROPAGATION_REQUIRED,-Throwable"); |
| 37 | + TransactionInterceptor transactionInterceptor = new TransactionInterceptor(); |
| 38 | + transactionInterceptor.setTransactionManager(transactionManager); |
| 39 | + transactionInterceptor.setTransactionAttributes(properties); |
| 40 | + return transactionInterceptor; |
| 41 | + } |
33 | 42 |
|
34 | | - DTXInterceptor dtxInterceptor = new DTXInterceptor(dtxLogicWeaver); |
35 | | - dtxInterceptor.setTransactionManager(transactionManager); |
36 | | - dtxInterceptor.setTransactionAttributes(properties); |
37 | | - return dtxInterceptor; |
| 43 | + /** |
| 44 | + * 分布式事务配置 设置为LCN模式 |
| 45 | + * @param dtxLogicWeaver |
| 46 | + * @return |
| 47 | + */ |
| 48 | + @ConditionalOnBean(DTXLogicWeaver.class) |
| 49 | + @Bean |
| 50 | + public TxLcnInterceptor txLcnInterceptor(DTXLogicWeaver dtxLogicWeaver) { |
| 51 | + TxLcnInterceptor txLcnInterceptor = new TxLcnInterceptor(dtxLogicWeaver); |
| 52 | + Properties properties = new Properties(); |
| 53 | + properties.setProperty(Transactions.DTX_TYPE,Transactions.LCN); |
| 54 | + properties.setProperty(Transactions.DTX_PROPAGATION, "REQUIRED"); |
| 55 | + txLcnInterceptor.setTransactionAttributes(properties); |
| 56 | + return txLcnInterceptor; |
38 | 57 | } |
39 | 58 |
|
40 | 59 | @Bean |
41 | 60 | public BeanNameAutoProxyCreator beanNameAutoProxyCreator() { |
42 | 61 | BeanNameAutoProxyCreator beanNameAutoProxyCreator = new BeanNameAutoProxyCreator(); |
43 | | - beanNameAutoProxyCreator.setInterceptorNames("transactionInterceptor"); |
| 62 | + beanNameAutoProxyCreator.setInterceptorNames("txLcnInterceptor","transactionInterceptor"); |
44 | 63 | beanNameAutoProxyCreator.setBeanNames("*Impl"); |
45 | 64 | return beanNameAutoProxyCreator; |
46 | 65 | } |
|
0 commit comments