簡體   English   中英

在導入的spring @Configuration中解析@Value

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM