[英]resolving @Value in imported spring @Configuration
我已經更改了原始答案,因為它不完整。 更新后的答案如下:
我想在測試@Configuration中自動裝配資源文件。 場景如下:
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = TestConfiguration.class)
public class FooTest {
@Test
public void foo() {
}
}
@Slf4j
@Configuration
public class TestConfiguration extends BaseConfiguration {
@Value("classpath:derby-db.sql")
private Resource dbScript;
@Bean
public Object foo() {
log.info("{}", dbScript);
return new Object();
}
@Override
protected Object getFoo() {
return foo;
}
}
public abstract class BaseConfiguration {
@Autowired
@Qualifier("foo")
protected Object foo;
protected abstract Object getFoo();
}
但是,該方案不起作用。 初始化bean foo
時,對dbScript
為null。 如果我將名為foo
的受保護的自動裝配字段移出BaseConfiguration
並將其放置到頂級TestConfiguration
,則一切都會按預期進行,並且dbScript
引用已初始化。
有人可以解釋一下這種行為嗎?
謝謝您的回復。
米羅
@Value批注用於注入屬性的值。 如果要初始化Resource對象,請在類名上方使用@PropertySource(value =“ classpath:xxxxx.properties”)批注。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.