我在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
在这里不起作用,因为它不是用于配置类排序的。。。是否可以重写某个类来影响那里的行为?