自定义切面与事务注解@Transactional问题
今天碰到一个问题,自己通过自定义注解实现了一个自定义切面,把切面切到了业务层的方法上,但是业务层方法会执行多个表的一个操作,必然需要使用到事务来保证数据一致性,所以业务层方法上面既有自定义注解又有事务注解,问题来了:自定义切面中实现环绕切面,执行点方法执行完毕无法及时更新数据库,最后排查发现是事务未提交就执行完了自定义切面。最后百度发现有一个东西叫自定义切面优先级@Order(value = int),可以设置一个优先级的顺序,数字越大就越先执行,事务注解的优先级可以在EnableTransactionManagement注解中找到(这里一定注意!!!不同版本的Spring的事务注解优先级可能不一样),找到之后把自定义切面的优先级比事务的低就行(直接在自定义切面类上面加@Order注解,指定value值就行)