2017-07-18 74 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的实现取决于正在初始化的上下文的类型。

相关问题