【问题标题】:Read all beans of class in Spring 3阅读 Spring 3 中的所有 bean
【发布时间】:2012-11-26 08:56:23
【问题描述】:

我需要阅读 com.Foo 类的所有 bean。 我以前是怎么做的:

BeanFactory factory = new XmlBeanFactory(new ClassPathResource(file));
Map elements = BeanFactoryUtils.beansOfTypeIncludingAncestors((ListableBeanFactory) factory, com.Foo.class);

事实证明,XmlBeanFactory 现在已被弃用。如何在 Spring 3.1 中读取给定类的所有 bean?


编辑:new 工厂必须能够从任何文件、类路径或文件系统加载 bean 定义 XML。到目前为止,我使用的是 Spring org.springframework.core.io.Resource 接口,它工作得很好(它有很多实现,适用于任何类型的文件)

【问题讨论】:

  • ListableBeanFactory 没有被弃用,它由每个应用程序上下文类实现。 beansOfTypeIncludingAncestors没有错
  • XmlBeanFactory 已被弃用。而且我找不到一个将Resourc 作为 ctor 参数的类(它并不总是来自类路径)
  • 尝试改用 ClassPathXmlApplicationContext。资源仅由应用程序上下文支持,而不是简单的 bean 工厂 imho
  • 就像我说的 - 我从文件中读取 bean 定义,不一定来自类路径

标签: java spring spring-3


【解决方案1】:

Resource 和资源位置作为构造函数参数的类是 GenericXmlApplicationContext

来自 javadoc:

具有内置 XML 支持的便捷应用程序上下文。这是一个 ClassPathXmlApplicationContext 的灵活替代方案和 FileSystemXmlApplicationContext,通过设置器进行配置,带有 最终 refresh() 调用激活上下文。

至于beansOfTypeIncludingAncestors()ListableBeanFactory,它们并没有被弃用。

【讨论】:

    猜你喜欢
    • 2019-05-04
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 2014-05-25
    • 1970-01-01
    相关资源
    最近更新 更多