当某个方法上加了@Transactional注解后,表示该方法调用时会开启事务,而这个方法所在的类的Bean对象是该类的代理对象。
事务流程
1.利用事务管理器(TransactionalManager)新建一个连接
2.修改数据库的autocommit为false
4.执行业务逻辑代码,也就是sql
5.执行完后如果未出现异常,则提交,否则回滚
判断事务是否失效的标准:
加了@Transactional的方法被调用时,如果是直接被代理对象调用,则事务失效,如果不是代理对象调用则生效。