事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种。
①编程式事务:是指在代码中手动的管理事务的提交、回滚等操作,代码侵入性比较强,如下示例:
try { //TODO something transactionManager.commit(status); } catch (Exception e) { er transactionManager.rollback(status); thrownew InvoiceApplyException("异常失败"); }
②声明式事务:基于AOP面向切面的,它将具体业务与事务处理部分解耦,代码侵入性很低,所以在实际开发中声明式事务用的比较多。声明式事务也有两种实现方式,一是基于TX和AOP的xml配置文件方式,二种就是基于@Transactional注解了。
@Transactional @GetMapping("/test") public String test() { int insert = cityInfoDictMapper.insert(cityInfoDict); }
@Transactional介绍
1、@Transactional注解可以作用于哪些地方?
@Transactional可以作用在接口、类、类方法。
作用于类:当把@Transactional 注解放在类上时,表示所有该类的public 方法 都配置相同的事务属性信息。作用于方法:当类配置了@Transactional,方法也配置了@Transactional,方法的事务会 覆盖 类的事务配置信息。作用于接口:不推荐这种使用方法,因为一旦标注在Interface上并且配置了Spring AOP 使用CGLib动态代理,将会导致@Transactional注解失效
2、@Transactional注解有哪些属性?
@Transactional @RestController @RequestMapping publicclass MybatisPlusController { @Autowired private CityInfoDictMapper cityInfoDictMapper; @Transactional(ro