设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 重新 试卷 文件
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

一个项目的SpringCloud微服务改造过程(8)

发布时间:2019-08-06 16:22 所属栏目:21 来源:黄玲峰
导读:改造后的SpringBoot基于Java代码: @Aspect @Configuration publicclassTransactionAdviceConfig{ /** *指定切入点 */ privatestaticfinalStringAOP_POINTCUT_EXPRESSION=execution(public*com.creditease.permissi

改造后的SpringBoot基于Java代码:

  1.  @Aspect 
  2. @Configuration 
  3. public class TransactionAdviceConfig { 
  4. /** 
  5. * 指定切入点 
  6. */ 
  7. private static final String AOP_POINTCUT_EXPRESSION = "execution(public * com.creditease.permission.service.impl.*Impl.*(..))"; 
  8.  
  9. @Resource 
  10. DruidDataSource dataSource; 
  11.  
  12. /** 
  13. * 指定处理事务的PlatformTransactionManager 
  14. * @return 
  15. */ 
  16. @Bean 
  17. public DataSourceTransactionManager transactionManager() { 
  18.  
  19. return new DataSourceTransactionManager(dataSource); 
  20.  
  21.  
  22. /** 
  23. * 指定切入点处理逻辑,执行事务 
  24. * @return 
  25. */ 
  26. @Bean 
  27. public TransactionInterceptor txAdvice() { 
  28.  
  29. DefaultTransactionAttribute txAttrRequired = new DefaultTransactionAttribute(); 
  30. txAttrRequired.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); 
  31.  
  32. DefaultTransactionAttribute txAttrRequiredReadonly = new DefaultTransactionAttribute(); 
  33. txAttrRequiredReadonly.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); 
  34. txAttrRequiredReadonly.setReadOnly(true); 
  35.  
  36. NameMatchTransactionAttributeSource source = new NameMatchTransactionAttributeSource(); 
  37. source.addTransactionalMethod("query*", txAttrRequiredReadonly); 
  38. source.addTransactionalMethod("find*", txAttrRequiredReadonly); 
  39. source.addTransactionalMethod("save*", txAttrRequired); 
  40. source.addTransactionalMethod("delete*", txAttrRequired); 
  41. source.addTransactionalMethod("add*", txAttrRequired); 
  42. source.addTransactionalMethod("modify*", txAttrRequired); 
  43. return new TransactionInterceptor(transactionManager(), source); 
  44.  
  45. /** 
  46. * Advisor组装配置,将Advice的代码逻辑注入到Pointcut位置 
  47. * @return 
  48. */ 
  49. @Bean 
  50. public Advisor txAdviceAdvisor() { 
  51.  
  52. AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut(); 
  53. pointcut.setExpression(AOP_POINTCUT_EXPRESSION); 
  54. return new DefaultPointcutAdvisor(pointcut, txAdvice()); 
  55. }
5)全局异常处理

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读