gpt4 book ai didi

Spring:FactoryBean 与 @Configuration

转载 作者:行者123 更新时间:2023-12-04 10:01:56 24 4
gpt4 key购买 nike

我没有看到 FactoryBean 用于创建 bean 的实用程序...为什么不能在 Configuration 类中创建相应的 bean? FactoryBean 有什么需要?

我知道我在这里遗漏了一些东西,但我无法弄清楚到底是什么

最佳答案

Spring Configuration 和 FactoryBean 类有类似的东西,但 Configuration 不仅可以选择为容器生成 bean。
@Configuration 的创建是为了在 java 中实现在 xml 中可以做的所有事情,甚至更多。

使用 FactoryBean,您可以:
1. 使用一些自定义逻辑创建 bean
仅此而已。
引用:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/FactoryBean.html

使用配置,您可以:
1. 声明没有任何创建逻辑的bean。
2.使用自定义逻辑为容器创建bean(与FactoryBean相同)。
3. 声明静态bean(见https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-value-annotations)
4. 声明@ComponentScan
5. 声明@PropertySource
6. 使用 @Import 从 java config 导入另一个配置
7. 使用@ImportResource 从xml 导入另一个配置
8. 可以导入配置类进行测试使用(作为测试配置)
....很多其他用途
引用:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Configuration.html

最显着的区别是 @Configuration 类由 Spring 容器管理,它的所有公共(public)方法都是代理的。
FactoryBean 不是由 Spring 容器管理的,它只是一个为容器创建 bean 的工具。

NB: A bean that implements this interface cannot be used as a normal bean. A FactoryBean is defined in a bean style, but the object exposed for bean references (getObject()) is always the object that it creates.....FactoryBean is a programmatic contract. Implementations are not supposed to rely on annotation-driven injection or other reflective facilities.

关于Spring:FactoryBean 与 @Configuration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61775861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com