spring切⾯执⾏顺序-事务切⾯注意点
1 Spring⾥⾯,如果⼀个⽅法,存在多个切⾯,是按照切⾯的Order顺序来执⾏的:Order值越⼩,那么切⾯越先执⾏(越后结束).
2 @Transactional的Order值是Integer.MAX_VALUE.
3 如果不指定Order,那么Order是默认值->Integer.MAX_VALUE. 如果Order相同,则是按照切⾯字母的顺序来执⾏切⾯.
⽐如@Transactional和@Cacheable->对应的切⾯是TransactionInterceptor和CacheInterceptor,则先执⾏@Cacheable的切⾯.
4 ⼀般将事务切⾯放到最贴近⽅法的那⼀层,即事务最后执⾏(最先结束),避免其他切⾯吃掉原本⽅法的异常,导致事务执⾏结果不符合预期.
5 事务的传递分为单机项⽬和微服务项⽬.
单机项⽬,A⽅法有事务,A调⽤B⽅法,B⽅法加不加注解,都会在A的事务⾥.
如果A⽅法没事务,B⽅法有事务,分两种情况,在同⼀个类,B事务不⽣效,在不同的类B事务⽣效,A⽆事务;
微服务项⽬,事务⽆法传递,只能在异常情况,进⾏代码异常回滚,尽可能保持事务⼀致.
>cacheable

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。