做网站分pc端和移动端的吗,公司名字查询,旅游网站模板文章,福步外贸论坛app官网Transactional
在方法开始前开启事务
检查异常#xff08;unchecked exception#xff09;不回滚
如果想针对检查异常进行事务回滚#xff0c;可以在Transactional注解里使用 rollbackFor属性明确指定异常。
Transactional(rollbackFor Exception.class)catch的异常不回…Transactional
在方法开始前开启事务
检查异常unchecked exception不回滚
如果想针对检查异常进行事务回滚可以在Transactional注解里使用 rollbackFor属性明确指定异常。
Transactional(rollbackFor Exception.class)catch的异常不回滚除非再throw
推荐做法在业务层统一抛出异常然后在控制层统一处理。 这样业务层一直在抛异常就保证了事务会回滚同时异常可以在控制层统一处理了 Transactional注解的常用属性表
属性说明propagation事务的传播行为默认值为 REQUIRED。isolation事务的隔离度默认值采用 DEFAULTtimeout事务的超时时间默认值为-1不超时。如果设置了超时时间(单位秒)那么如果超过该时间限制了但事务还没有完成则自动回滚事务。read-only指定事务是否为只读事务默认值为 false为了忽略那些不需要事务的方法比如读取数据可以设置 read-only 为 true。rollbackFor用于指定能够触发事务回滚的异常类型如果有多个异常类型需要指定各类型之间可以通过逗号分隔。{xxx1.class, xxx2.class,……}noRollbackFor抛出 no-rollback-for 指定的异常类型不回滚事务。{xxx1.class, xxx2.class,……}
事务不生效的几种 Case
主要讲解 4 种事务不生效的 Case
类内部访问A 类的 a1 方法没有标注 Transactionala2 方法标注 Transactional在 a1 里面调用 a2私有方法将 Transactional 注解标注在非 public 方法上异常不匹配Transactional 未设置 rollbackFor 属性方法返回 Exception 等异常多线程主线程和子线程的调用线程抛出异常
注入
原理与顺序,是从谁注入
动态代理
jdk动态代理需要基于接口实现因为底层源码时通过实现接口的方式实现代理的如果使用类的话会受到java单继承机制的限制 spring默认使用jdk动态代理