java - Spring:新建和 Autowiring :新建的对象可以永远不使用 Autowiring 吗?

标签 java spring spring-mvc

据我了解,如果您直接新建一个对象,Spring 现在可以注入(inject)由 @Autowired 指定的依赖项。

但是,假设您有一个可以在其中创建新 Customer 对象的 UI。我相信,在坚持之前先更新客户是唯一的出路。如果是这样,如果我希望客户有一些复杂的行为,需要访问某些通常会自动连接的服务,该怎么办?

一旦保存并检索了 Customer 对象,Spring 是否有可能能够注入(inject) Autowiring 的依赖项?那么错误是“太早”尝试使用 Customer 对象吗?

我的主要问题是,想要在新对象中使用 Autowired 是否反射(reflect)了设计缺陷?

编辑:我已经看到了新对象实际上可以使用 Autowire 的方法,但我的问题是,对于像 Customer、User、Person 等常见类,他们甚至需要使用 @Autowired 是不寻常的吗?它们本质上应该是纯数据对象吗?我似乎需要创建新对象并让这些对象表现出行为,但也许我在设计方面做了一些错误的事情。

最佳答案

您可以使用org.springframework.beans.factory.ObjectFactory<T>动态创建对象的多个实例。在 Spring ,就像 javax.enterprise.inject.Instance<T> Java EE CDI 接口(interface)。请参阅:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/ObjectFactory.html

@Autowired
ObjectFactory<Customer> customerFactory; 

...
Customer newCustomer = customerFactory.get();
...

如果“Customer”是您的实体类,您应该避免 Autowiring 服务。

您的实现情况如何?您能否提供更多详细信息?

关于java - Spring:新建和 Autowiring :新建的对象可以永远不使用 Autowiring 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39997499/

相关文章:

java - JSplitPane 不绘画更正

java - 在 Java 中处理元组

java - 在 Java 中使用 Groovy 向类添加方法

java - Spring MVC 与 OSGi - 如何注册新 Controller - 第二部分?

javascript - 在 jBoss 6.2 和 jBoss 7.3 中部署应用程序时的不同响应

java - 在最新的 spring-security-oauth2-2.0.6.RELEASE.jar 中找不到 TokenServicesUserApprovalHandler

java - 使用select和option标签在jsp中插入数据

mysql - spring boot和hibernate mysql数据库连接一直断开

java - Spring 中的动态 Apache log4j

spring - 如何在spring mvc中的两个 Controller 之间传递对象?