aop和事务

1.如何使用aop配置记录系统日志?

(1)两个注解一个切面

启动类扫描注解@Import

绑定切点的注解@Syslog

Aspect类加环绕通知@around

(2)启动类加扫描注解

@EnableLogAspect

(3)实现增强方法(环绕通知)

前置增强

代理执行连接点方法

后置增强

(4)具体实现

记录方法基本信息

方法反射信息,返回参数

http请求信息

请求结果

错误日志

记录过程:引用service记录数据库,在log模块申明,在微服务中实现

2.如果系统的日志和事务冲突,如何解决?

方法1:可以改变aop优先级(@Order),默认事务优先级较高,后执行,事务aop包括日志aop,事务先回滚,然后记录在日志中

方法2:让内层的日志aop抛出异常,事务感知后就会回滚,但日志记录也会回滚,不会记录任何信息

方法3:让日志aop重新开启一个事务,@Transactional(propagation = Propagation.REQUIRES_NEW)

这样就有两个事务,方法出错后,事务回滚,但日志的事务不受影响,可以记录信息

你可能感兴趣的:(java)