将超类中的 @Sql 与子类中的 @Sql 合并

2024-04-11

我有一个带有注释的抽象类@Sql(executionPhase = ExecutionPhase.BEFORE_TEST_METHOD, scripts="someScript") .

我有一个继承自抽象类的测试类。子类也注释为@Sql(executionPhase = ExecutionPhase.BEFORE_TEST_METHOD, scripts="someOtherScript").

当我运行 spring boot 1.2 时,一切都按我的预期进行:父类的脚本在子类之前运行。我升级到 Spring Boot 1.3 现在,子类的@Sql覆盖父类的@Sql并且父类脚本永远不会运行。

Spring Boot 1.3 有不同的方法吗?那么父类脚本在子类脚本之前运行吗?


Spring Boot 1.3 有不同的方法吗?那么父类脚本在子类脚本之前运行吗?

好的,经过一些调查工作,我已经找到了你问题的答案。

简答

不,不幸的是,您尝试做的事情是不可能的。

详细解答

根据设计,合并本地类级别声明@Sql具有类级别声明@Sql从未支持超类。本地声明的目的始终是override超类的声明。

因此,你只是幸运(或不幸,取决于你如何看待它)它对你有用。

它对你有用的唯一原因是 Spring 核心支持查找中的一个错误@Repeatable注释(参见SPR-13068 https://jira.spring.io/browse/SPR-13068了解详情)。

然而,这个错误在 Spring Framework 4.2 中得到了修复,并且由于 Spring Boot 1.3 自动将您的 Spring Framework 依赖项升级到 4.2,这就是您在 Spring Boot 升级后注意到该问题的原因。

Regards,

Sam (Spring TestContext 框架的作者)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将超类中的 @Sql 与子类中的 @Sql 合并 的相关文章

随机推荐