java - 使用 Spring 初始化 POJO 对象

标签 java spring

我的应用程序中有一些模型对象或所谓的 POJO 对象。 这些对象仅用于存储数据,不会执行任何操作。

我知道在大多数情况下 Spring Bean 不是 POJO。例如,我主要将 DAO、服务、 Controller 类声明为 Spring Bean。

但是如果我用 new 关键字初始化 POJO 甚至 List 对象 我将它与实现类紧密耦合。

因此,如果以后有人扩展我的 POJO 以添加一些成员变量,他将无法将其注入(inject)到服务类中。

我想过使用应用程序上下文感知来做到这一点,但后来我将我的应用程序与 Spring 紧密耦合。

所以我的问题是

初始化 POJO 对象的最佳方法是什么,以便以后可以扩展它。 我更喜欢使用 spring Spring IOC 容器来完成此操作

最佳答案

首先,我会非常关心将代码绑定(bind)到实现类。您是正确的,IoC 用于为代码库提供灵活的点(扩展而不是修改),但除非您正在编写框架,否则没有理由不使用 new 关键字来实例化一个 POJO。当有人要扩展您的 POJO 时,他们很可能有足够的能力将扩展注入(inject)相关服务。

如果你真的想使用Spring,你必须在IoC容器中注册一个bean。如果您不想要单例,可以使用 @Scope 让 Spring 在每次请求 bean 时实例化一个新实例:

@Component
@Scope("prototype")
public class Foo {

}

关于java - 使用 Spring 初始化 POJO 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37470039/

相关文章:

java - 将一棵树分解为森林

java - 我如何在 Spring Boot 项目的生产中禁用 Swagger-UI

java - 如果不存在,则复制到现有文件时抛出错误

java - <beans> 与profile 一起使用时可以在里面定义<bean> 吗?

spring - 减少助焊剂形成单晶

java - 在 Java 中显式使用 toString() 方法打印对象的任何原因

java - android:elevation 不适用于 BottomNavigationView

spring - gwt + jetty + Spring + log4j 错误 : "DOMConfigurator object is not assignable to a Configurator"

java - 如何在Spring Controller 中从URL服务器inputStream

java - MqttPahoMessageHandler 和重连率管理