我有一个用@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合并
- 基于Java实现简易的七星彩号码生成器 2023-04-06
- 学习Java之如何正确地向上转型与向下转型 2023-07-14
- 关于Spring中的三级缓存解析 2023-04-17
- spring jpa设置多个主键遇到的小坑及解决 2023-01-02
- Springboot详解线程池与多线程及阻塞队列的应用详解 2023-01-13
- JSP 自定义标签实现数据字典的实例 2023-07-30
- Java中4种经典限流算法讲解 2023-03-30
- java – Spring Data MongoDB审计不适用于嵌入式文档 2023-10-31
- 解决springcloud阿里云OSS文件访问跨域问题的实现 2022-12-07
- Java定时器Timer的源码分析 2023-07-01