Spring @ContextConfiguration强制执行命令?

时间:2018-07-20 16:23:43

标签: java spring junit spring-config

我在Spring(4.1.7)中编写了一些Configuration类,以使编写一些标准的东西(例如Testcase)更加容易。为此,我使用了@Condition来检查,例如,是否已经定义了DataSource,如果没有,请创建一个新的内存中对象。当然,这基本上是Spring Boot已经提供的功能-但由于我们尚未在该应用程序中使用Spring Boot,因此我们这里不是一个选择。

例如,如果您写的话,整个过程就很好...

@RunWith(SpringJunit4Runner.class)
@ContextConfiguration( classes = {SomeTest.Config.class, DefaultConfig.class} )
public class SomeTest {

    static class Config {

       ...

在这种情况下,首先读取静态Config类,创建其中的bean,然后查看DefaultConfig并实例化,例如DataSource(如果{{ 1}}没有。

此解决方案的问题在于,它包含一个隐式知识:您需要知道必须首先在Config批注中编写更具体的配置类。如果将@ContextConfiguration放在第一位,它将首先检查一个,并且由于例如尚未创建DefaultConfig,它将创建一个,这可能会导致不利的副作用(因为某些东西取决于例如,还在那里创建了DataSource

我真的想通过强制始终将DataSource作为最后一个配置来加载来使其更加稳定(而不必在DefaultConfig注释中明确地将它放在最后)。因此,如果开发人员弄乱了整个订单,那么就不会发生任何不好的事情,并且一切都会按计划进行,因为@ContextConfiguration会最后加载,然后才检查其他所有人是否已经定义了DefaultConfig。 / p>

有什么办法可以做到这一点?我需要的只是Spring Boot行为,其中自动自动处理 last 的自动配置类。 显然DataSource在这里不起作用,因为它不是用于配置类排序的。。。是否可以重写某个类来影响那里的行为?

0 个答案:

没有答案