Previously:
调用接口先打在Controller上相应方法,然后Controller中调Service再有Service的实现层Impl去实现相应业务,所以ServiceImpl会实现Service的接口一般有注解@Override
但是突然发现某个方法下除了@Override
居然还有个 @Transactional
那这个是个什么东西呢?
Spring事务管理分为:编程式和声明式的两种方式
一、编程式事务:指的是通过编码方式实现事务
二、声明式事务:基于 AOP,将业务逻辑与事务处理解耦建议使用
声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多
声明式事务有两种方式
一、在配置文件(xml)中做相关的事务规则声明,注意:通用情况就写到配置文件里,可重用
二、基于 @Transactional
注解的方式,注意:私有就写成注解形式
其他:
1、默认配置下 Spring 只会回滚运行时、未检查异常(继承 RuntimeException 异常)或者 Error
2、@Transactional
注解只能用到 public 方法才有效。