此撒播属性下,无论挪用者是否有事宜,被挪用者城市新建一个事宜
- 第一种环境:挪用者无事宜,被挪用者会新建事宜,以是查不到数据
- 第二种环境:挪用者有事宜,被挪用者会新建一个事宜,以是挪用者抛非常影响不到被挪用者,以是能查到数据
接下来我们演示代码。
被挪用者
- // REQUIRES_NEW撒播属性-被挪用者有非常抛出
- @Override
- @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW)
- public void testRequiresNewHasException() throws RollbackException {
- jdbcTemplate.execute("INSERT INTO FOO (BAR) VALUES ('"+Global.REQUIRES_NEW_HAS_EXCEPTION+"')");
- throw new RollbackException();
- }
- // REQUIRES_NEW撒播属性-被挪用者无非常抛出
- @Override
- @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW)
- public void testRequiresNewNoException() throws RollbackException {
- jdbcTemplate.execute("INSERT INTO FOO (BAR) VALUES ('"+Global.REQUIRES_NEW_NO_EXCEPTION+"')");
- }
挪用者的例子和上面的沟通,我们直接来看执行环境
- 2019-10-16 16:29:20.296 INFO 15553 --- [ main] c.e.t.t.TransactionApplication : 第一种环境 0
- 2019-10-16 16:29:20.298 INFO 15553 --- [ main] c.e.t.t.TransactionApplication : 第二种环境 1
我们发明和我们的推论是一样的,声名挪用者的事宜和被挪用者的事宜完全无关。此时我们应该就领略这句话了无论当前是否有事宜,城市新起一个事宜。
PROPAGATION_NOT_SUPPORTED
无论挪用者是否有事宜,被挪用者都不以事宜的要领运行
同样是这两个例子
- 第一种环境:被挪用者都不会有事宜,那么在抛非常之后就能查到响应的数据
- 第二种环境:在挪用者有事宜的环境下,被挪用者也会在无事宜情形下运行,以是我们依然能查到数据
接下来验证我们的揣摩
- // NOT_SUPPORTED撒播属性-被挪用者有非常抛出
- @Override
- @Transactional(rollbackFor = Exception.class,propagation = Propagation.NOT_SUPPORTED)
- public void testNotSupportHasException() throws RollbackException {
- jdbcTemplate.execute("INSERT INTO FOO (BAR) VALUES ('"+Global.NOT_SUPPORTS_HAS_EXCEPTION+"')");
- throw new RollbackException();
- }
- // NOT_SUPPORTED撒播属性-被挪用者无非常抛出
- @Override
- @Transactional(rollbackFor = Exception.class,propagation = Propagation.NOT_SUPPORTED)
- public void testNotSupportNoException() throws RollbackException {
- jdbcTemplate.execute("INSERT INTO FOO (BAR) VALUES ('"+Global.NOT_SUPPORTS_NO_EXCEPTION+"')");
- }
然后查察执行功效
- 2019-10-16 16:38:35.065 INFO 15739 --- [ main] c.e.t.t.TransactionApplication : 第一种环境 1
- 2019-10-16 16:38:35.067 INFO 15739 --- [ main] c.e.t.t.TransactionApplication : 第二种环境 1
我们可以看到在最后两种环境都查到了数据,按照演示结果应该可以领略这句话了,不支持事宜,假如当前存在事宜,就将此事宜挂起不以事宜方法运行。
PROPAGATION_NEVER
挪用者有事宜,被挪用者就会抛出非常
这个就不演示,信托各人看到这里应该城市大白在第一种环境下我们是可以或许查到数据的。在第二种环境下因为挪用者带着事宜,以是会抛非常。
PROPAGATION_NESTED
此撒播属性下,被挪用者的事宜是挪用者的事宜的子集。
我们重点说一下NESTED的撒播属性的特征 (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|