[英]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.