【发布时间】:2021-11-30 14:36:59
【问题描述】:
我了解BeanFactory 和ApplicationContext 之间的区别。
我还知道可以从 xml 文件创建 BeanFactory 实例,这些文件位于类路径或文件系统中的任何其他位置。因此,在这种情况下会创建一个 XMLBeanFactory 实例。
与此同时,我正在研究 BeanFactory 文档并偶然发现了这一点。
通常,BeanFactory 会加载存储在配置源(例如 XML 文档)中的 bean 定义,并使用 org.springframework.beans 包来配置 bean。但是,实现可以简单地返回它根据需要直接在 Java 代码中创建的 Java 对象。对定义的存储方式没有限制:LDAP、RDBMS、XML、属性文件等。鼓励实现支持 bean 之间的引用(依赖注入)。
那么,这是否意味着 bean 定义也可以是非 XML 格式?即,LDAP,RDBMS,属性文件等?如果是,请提供它的sn-p。我只在寻找 BeanFactory 而不是任何 ApplicationContext 实现。
【问题讨论】:
-
如果您有 LDAP 的
BeanFactory实现,它可以来自那里。如果您提供正确的实现,您可以从任何地方提取它们。 Spring 仅提供使用属性文件、xml 和 java 配置(或 groovy/ruby)的实现。 -
@M.Deinum 你说的属性文件是指spring boot application.properties吗?
-
@M.Deinum 除了 Spring 框架本身,还有其他 BeanFactory 的实现吗?
-
阅读博客。
ApplicationContext也是BeanFactory。在使用属性的示例中,您可以使用DefaultListableBeanFactory而不是GenericApplicationContext并获得完全相同的结果。
标签: java spring factory spring-bean