一尘不染

每当我说@Transactional时,对每个选中的异常回滚

spring

由于程序员被迫捕获所有已检查的异常,因此在出现任何问题时都会抛出已检查的异常。我想回退任何这些期望。rollbackFor=Exception.class在每个@Transactional注释上书写都非常容易出错,因此我想告诉spring:“每写一次@Transactional,我的意思是@Transactional(rollbackFor=Exception.class)”

我知道,我可以创建一个自定义批注,但这似乎是不自然的。

那么有没有办法告诉spring它应该如何在全球范围内处理检查的异常情况呢?


阅读 537

收藏
2020-04-18

共1个答案

一尘不染

自定义快捷方式注释
我知道,我可以创建一个自定义批注,但这似乎是不自然的。

如果发现你在许多不同方法上重复使用@Transactional使用相同的属性,那么Spring的元注释支持使你可以为特定用例定义自定义快捷方式注释。

样例代码
这是你的用例的示例注释:

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Transactional(rollbackFor=Exception.class)
public @interface MyAnnotation {
}

现在用@MyAnnotation(你会想到一个更好的名称)注释你的服务和/或方法。这是经过良好测试的功能,默认情况下有效。为什么要重新发明轮子?

2020-04-18