我有一个用@Sql注释的抽象类(executionPhase = ExecutionPhase.BEFORE_TEST_METHOD,scripts =“someScript”).我有一个继承自抽象类的测试类.子类也使用@Sql注释(executionPhase = ExecutionPhase.BEFORE_TEST_METH...

我有一个用@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有不同的方法吗?那么父类脚本是在子类脚本之前运行的吗?
解决方法:
With spring boot 1.3 is there a different way of doing this? So that parent class scripts are run before child class scripts?
好的,经过一些调查工作,我已经找到了你的问题的答案.
简答
不,不幸的是,你想要做的事情是不可能的.
详细解答
通过设计,从未支持将@Sql的本地类级声明与超类上的@Sql的类级声明合并.本地声明总是旨在覆盖超类的声明.
因此,你只是幸运(或不幸,取决于你如何看待它)它对你有用.
它曾经为你工作的唯一原因是由于Spring核心支持查找@Repeatable注释的错误(详见SPR-13068).
但是,这个错误在Spring Framework 4.2中已得到修复,并且由于Spring Boot 1.3自动将Spring Framework依赖项升级到4.2,这就是为什么你在Spring Boot升级后注意到这个问题的原因.
问候,
Sam(Spring TestContext Framework的作者)
本文标题为:java – 将超类中的@Sql与子类中的@Sql合并


基础教程推荐
- 浅谈springboot如何保证多线程安全 2023-08-11
- IntelliJ IDEA快速查看某个类/接口的子类或父类 2023-02-19
- log4j升级log4j2遇到的问题及解决方式 2023-08-11
- SpringBoot利用注解来实现Redis分布式锁 2023-05-08
- jsp实现针对excel及word文档的打印方法 2023-08-03
- Java中的多种文件上传方式总结 2022-12-14
- Java公平锁与非公平锁的核心原理讲解 2023-07-01
- 使用jib插件为Java应用构建镜像的方法 2023-04-17
- Spring Boot实现功能的统一详解 2023-01-18
- SpringBoot Loki安装简介及实战思路 2023-07-01