首页天道酬勤@autowired注解原理,spring声明式事务注解

@autowired注解原理,spring声明式事务注解

张世龙 05-06 01:19 77次浏览

1 .自动提交事务(声明)1.对方法添加@Trasactional注释,默认情况下捕获RuntimeException异常,并在方法中执行所有数据库操作(添加、删除、修改) 如果需要为自定义异常设置(@ transactional (roll back on=exception.class ) ) ) ) ) ) ) ) ) )。

2 .在配置文件或启动类中启动事务。

SpringBoot只需在启动类中添加@EnableTransactionManagement注释即可。 (打开注释事务管理与xml布局方式的tx:annotation-driven /等效) ) ) ) ) ) ) ) ) )。

注:需要将异常的异常信息扔向上级框架。 catch处理的异常不能作为判断事物的依据。如果异常被catch,而catch抛出了新的异常,则事物将该新的异常作为是否进行回滚的判断的依据。

使用声明式注释时,除了向外抛出异常外,

主动设置事务需要回滚。 必须将@Trasactional添加到方法中。

transactionaspectsupport.currenttransactionstatus ().setRollbackOnly );

@ transactional (roll back on=exception.class ) publicvoidtrandelnoautozj (字符串名称) userdeleteuer=user repository.USS=null (用户存储库. delete byid ) deleteuer.getid (); }if(deleteuer.getid(%2==0) ) else ) transactionaspectsupport.currenttransactionstatus ).setRollbackOnly //主动

@ autowireddatasourcetransactionmanagerdatasourcetransactionmanager (这是JDBC的事务管理器,因ORM而异);

@ autowiredtransactiondefinitiontransactiondefinition; 手动打开事务

transactionstatustransactionstatus=datasourcetransactionmanager.get transaction (transaction definition );

手动提交事务

datasourcetransactionmanager.com MIT (transaction status; //提交

手动回滚事务

atasourcetransactionmanager.roll back (transaction status; 放入catch中,防止程序异常导致事务被卡在某个地方提交是很好的

Spring Mybatis事务@ autowireddatasourcetransactionmanagerdatasourcetransactionmanager; publicvoidtrandelnoauto (字符串名称) defaulttransactiondefinitiondefaulttransactiondefinition=newdefaultttransactiondefindefinion action status=datasourcetransactionmanager.get transaction (defaulttransactiondefinition; userdeleteuer=user存储库. findonebyname (name; 删除用户!=null (用户存储库. delete byid ) deleteuer.getid (); }if(deleteuer.getid(%2==0) datasourcetransactionmanager.com MIT ) transactionstatus ); } else { datasourcetransactionmanager.roll back (transaction status; } } Spring Data Jpa事务@ autowiredjpatransactionmanagerjpatransactionmanager; publicvoidtrandelnoauto (字符串用户名称) (defaulttransactiondefinitiondefaulttransactiondefinition=newdefaultttransactiondaction iondiondaultra transactionstatustransactionstatus=jpatransactionmanager.get transaction (defaulttransactiondefinition ); userdelteuser=I userdao.findbyusername; 戴尔用户!=null ) I userdao.delete byid (delte user.get userid (); }if(Delteuser.getuserid(%2==0) jpatransactionmanager.comMIT ) transactionstatus ); } else { jpatransactionmanager.roll back (transaction status; }

java事务注解,java清空map的方法