У меня есть свойство test=default
в классе DefaultConfig, и я делаю их доступными с помощью аннотации @PropertySource.
@Configuration
@PropertySource("classpath:default.properties")
public class DefaultConfig {}
Затем я хочу переопределить значение test=override
, которое находится в другом файле свойств в классе OverrideConfig, поэтому я снова использую @PropertySource.
@Configuration
@Import(DefaultConfig.class)
@PropertySource("classpath:override.properties")
public class OverrideConfig {}
Я настраиваю тест, чтобы доказать, что он работает.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={OverrideConfig.class})
public class TestPropertyOverride {
@Autowired
private Environment env;
@Test
public void propertyIsOverridden() {
assertEquals("override", env.getProperty("test"));
}
}
За исключением, конечно, этого не происходит.
org.junit.ComparisonFailure: expected:<[override]> but was:<[default]>
Максимальное отладка, я вижу, что происходит:
StandardEnvironment:107 - Adding [class path resource [default.properties]] PropertySource with lowest search precedence
StandardEnvironment:107 - Adding [class path resource [override.properties]] PropertySource with lowest search precedence
Кажется назад. Я делаю простую ошибку или тупо это, или вы ожидаете, что свойства, определенные @PropertySource в классе конфигурации @Import-ed, будут переопределены свойствами, определенными в am @PropertySource в классе @Import-ing?