spring bean 总是一个 POJO

Is spring bean always a POJO

Spring bean 是否必须始终是 POJO?

有没有其他方法可以创建不是 POJO 的 bean?

一个Spring bean 可以是任何东西。 类 可以正常实例化(即 Java Beans 或任何其他常规 class)可以通过 xml 或 Java-Config.

任何更复杂的东西都可以通过 FactoryBean.

创建

因此,回答您的问题:任何 Java 对象都可以成为 Spring Bean。

我觉得是有误会
POJO 表示普通旧 Java 对象。
它指的是 Java 没有被框架扩展拖累的对象。

我们将 Spring 与 POJO 联系起来,以表达 Spring 中的 beans 保持简单、可测试、可适应等...,而不是或很少耦合到特定的框架接口或实现。
POJO 通过使用通常的元数据(例如 XML 或代码注释(通常首选,因为不那么冗长并且直接位于相关 class 中)将 bean 绑定到框架来带来低耦合。

POJO 可能反对像 EJB 这样的侵入式框架 2.X,它在 bean 和 EJB 框架之间建立了强耦合。

现在,您的 bean 可能是 POJO,也可能不是。
当然,第一种方式应该提倡,说明原因。
通过使用 Spring,您通常没有理由不专门为您的 bean 使用 POJO classes,因为 POJO 更好,而且 Spring 通常不会强迫您耦合您的 bean classes 到一些特定的 Spring classes 或接口。
请注意,在某些情况下,我们必须在您的 bean classes 中耦合到 Spring 框架 classes,因为您希望从 Spring 功能增强中受益,例如 Spring Repository.
但在这些情况下,你得到的 "more" 比一个豆子。