【问题标题】:Why I do not need a configuration bean for Environment interface为什么我不需要环境接口的配置 bean
【发布时间】:2017-07-18 14:11:25
【问题描述】:

我不明白为什么我想使用环境接口时不需要配置bean?例如,要使用环境变量“文件名”,我必须在我的班级中 @Autowired Environment

@Autowired
private Environment env;

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

你能解释一下为什么在这种情况下我不需要配置任何 bean 吗?如何检查 Spring 代码或文档为什么我不需要它。提前致谢

【问题讨论】:

  • 它是几个特殊对象之一,就像你不需要自己配置的ApplicationContextResourceLoader一样。

标签: java spring


【解决方案1】:

所有内置的ApplicationContext 实现都带有一组预先注册的bean 定义。这些都列在文档中,here:

您也可以将@Autowired 用于众所周知的接口 可解析的依赖:BeanFactory, ApplicationContext, Environment, ResourceLoaderApplicationEventPublisherMessageSource。这些 接口及其扩展接口,例如 ConfigurableApplicationContextResourcePatternResolver,是 自动解决,无需特殊设置。

这并不明显,但由于@Autowired 有效,因此通过ApplicationContext#getBean(..) 获取这些类型的bean 也是如此。换句话说,它们都有自己的 bean 定义。 bean 实现取决于被初始化的上下文类型。

【讨论】:

    猜你喜欢
    • 2015-11-11
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 2012-03-16
    • 1970-01-01
    • 2011-04-01
    • 2016-12-29
    相关资源
    最近更新 更多