Ked*_*ikh 24 spring spring-mvc
如果我们在使用@Transactional
注释注释的方法中捕获异常,那么如果发生任何异常,它是否会回滚?
@Transactional(readOnly = false, propagation = Propagation.REQUIRED, rollbackFor=Throwable.class)
public void yearEndProcess() {
try {
// try block
} catch (Throwable throwable) {
// catch block
}
}
Run Code Online (Sandbox Code Playgroud)
Ank*_*hal 24
例如
class A{
@Transactional
public Result doStuff(){
Result res = null;
try {
// do stuff
} catch (Exception e) {
}
return res ;
}
}
Run Code Online (Sandbox Code Playgroud)
如果在该方法的例外doStuff
的事务不会回滚.
To rollback the exception programmatically
,我们可以做类似下面的事情.
陈述性方法
@Transactional(rollbackFor={MyException1.class, MyException2.class, ....})
public Result doStuff(){
...
}
Run Code Online (Sandbox Code Playgroud)
您需要从中调用它的程序化回滚TransactionAspectSupport
.
public Result doStuff(){
try {
// business logic...
} catch (Exception ex) {
// trigger rollback programmatically
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
}
You are strongly encouraged to use the `declarative approach` to `rollback` if at all possible.
`Programmatic rollback` is available should only be used if you absolutely need it.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26777 次 |
最近记录: |