被挪用者,只是将@Transactional 注解中的propagation 属性改换为了Propagation.SUPPORTS
- // SUPPORTS撒播属性-被挪用者有非常抛出
- @Override
- @Transactional(rollbackFor = Exception.class,propagation = Propagation.SUPPORTS)
- public void testSupportsHasException() throws RollbackException {
- jdbcTemplate.execute("INSERT INTO FOO (BAR) VALUES ('"+Global.SUPPORTS_HAS_EXCEPTION+"')");
- throw new RollbackException();
- }
- // SUPPORTS撒播属性-被挪用者无非常抛出
- @Override
- @Transactional(rollbackFor = Exception.class,propagation = Propagation.SUPPORTS)
- public void testSupportsNoException() throws RollbackException {
- jdbcTemplate.execute("INSERT INTO FOO (BAR) VALUES ('"+Global.SUPPORTS_NO_EXCEPTION+"')");
- }
挪用者和上面的例子挪用一样,我们直接查察执行结果
- 2019-10-16 13:50:27.738 INFO 12174 --- [ main] c.e.t.t.TransactionApplication : 第一种环境 1
- 2019-10-16 13:50:27.741 INFO 12174 --- [ main] c.e.t.t.TransactionApplication : 第二种环境 0
我们看到了在第一种环境下查到了数据,声名在第一种环境下被挪用者是没有事宜的。此时我们应该就领略了这句话 支持当前事宜,假如没有就不以事宜的方法运行。
PROPAGATION_MANDATORY
依然是这两个例子举办演示
- 第一种环境:由于挪用者没有事宜,以是此撒播属性下应该是抛非常的
- 第二种环境:被挪用者的事宜和挪用者事宜是同样的
接下来是被挪用者的代码例子
- // MANDATORY撒播属性-被挪用者有非常抛出
- @Override
- @Transactional(rollbackFor = Exception.class,propagation = Propagation.MANDATORY)
- public void testMandatoryHasException() throws RollbackException {
- jdbcTemplate.execute("INSERT INTO FOO (BAR) VALUES ('"+Global.SUPPORTS_HAS_EXCEPTION+"')");
- throw new RollbackException();
- }
- // MANDATORY撒播属性-被挪用者无非常抛出
- @Override
- @Transactional(rollbackFor = Exception.class,propagation = Propagation.MANDATORY)
- public void testMandatoryNoException() throws RollbackException {
- jdbcTemplate.execute("INSERT INTO FOO (BAR) VALUES ('"+Global.SUPPORTS_NO_EXCEPTION+"')");
- }
挪用者和上面的例子挪用一样,我们直接查察执行结果
- 2019-10-16 13:58:39.178 ERROR 12317 --- [ main] c.e.t.t.TransactionApplication : org.springframework.transaction.IllegalTransactionStateException: No existing transaction found for transaction marked with propagation 'mandatory'
- 2019-10-16 13:58:39.276 INFO 12317 --- [ main] c.e.t.t.TransactionApplication : 第一种环境 0
- 2019-10-16 13:58:39.281 INFO 12317 --- [ main] c.e.t.t.TransactionApplication : 第二种环境 0
我们发明和我们展望一样,声名被挪用者是不会本身新建事宜的,此时我们应该就领略了这句话支持当前事宜,假如当前没事宜就抛非常。
PROPAGATION_REQUIRES_NEW (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|