2017-07-18 35 views
1

我不明白爲什麼我不需要配置bean,當我想使用環境接口?例如,使用環境變量「文件名」我要@Autowired環境在我的課爲什麼我不需要配置bean的環境接口

@Autowired 
private Environment env; 

public BigDecimal getRate(String currency, Date rateDate) { 
    fileName = env.getProperty("filename"); 
    System.out.println(fileName); 
    return ... 
} 

你能解釋一下我爲什麼我不需要在這種情況下,配置任何豆?如何檢查Spring代碼或文檔爲什麼我不需要它。在此先感謝

+0

它是幾個特殊對象之一,就像'ApplicationContext',你不需要自己配置或'ResourceLoader'。 –

回答

3

所有內置的ApplicationContext實現都帶有一組預先註冊的bean定義。這些文件中列出,here

您還可以使用@Autowired對於那些知名 解析依賴接口:ApplicationContextBeanFactoryEnvironmentResourceLoaderApplicationEventPublisherMessageSource。這些 接口及其擴展接口,如 ConfigurableApplicationContextResourcePatternResolver,都是 自動解析,無需特殊設置。

這並不明顯,但自@Autowired起作用,那麼通過ApplicationContext#getBean(..)獲得這些類型的bean。換句話說,他們都得到了自己的bean定義。 bean的實現取決於正在初始化的上下文的類型。

相關問題