前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
Spring @Transactional想必大家都很熟悉,那它是在类上或实现类的方法上和在接口上或接口方法上哪种使用方式是更好的选择呢?
@Transactional介绍
@Transactional 是Spring提供的声明式事务管理,使用起来简单、方便,又能和业务逻辑解耦。
Spring的声明式事务管理在底层是建立在 AOP 的基础之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。
Spring的动态代理
Spring AOP是通过动态代理实现的。如果代理对象实现了接口,默认使用JDK的动态代理,反之没有实现接口则使用cglib的动态代理。
言归正传
回到问题上,在正确使用@Transactional注解时,不管@Transactional注解是在类上或实现类的方法上还是在接口上或接口方法上,它的事务功能都是可以实现的,只是选择那种方式更优雅一点而已。