0

我敢肯定这已经被问过一百次了,但我似乎找不到这个问题,所以请随时向我推荐其他 stackoverflow 答案。

大多数 Spring 用户对需要注入的非单例 bean 的对象做了什么?例如,我有像 Customer 这样的类,我想每次都实例化一个新的类。可以说它是一个实体,我想注入侦听器以在 @PreRemove 或其他地方进行迭代。通常的解决方案是使用@Configurable,但这似乎是一种解决方法,我想知道是否有更规范的方法来处理这些问题。

我唯一能想到的就是在我的 CustomerRepository 类中创建一个工厂 newCustomer 实例方法,该类是一个托管 bean。然后,我没有将侦听器注入 Customer(最自然的地方),而是将它们注入 CustomerRepository 并将它们指定为 Customer ala new Customer(injectedListeners)的显式构造函数参数。

人们倾向于只使用 Configurable 还是有更好的方法来注入非单例实例?还是大多数用户都像上面那样创建工厂方法?实体示例只是一个示例,我还有其他非单例对象,通常是新的但需要注入。

像 Guice 这样的处理方式会有所不同吗?您将如何仅使用 JSR-330 功能来做到这一点?

4

1 回答 1

0

如果你愿意,你可以制作非单例的豆子。取决于您是否可以使用 XML:

<bean id="beanA" class="misc.BeanClass" scope="prototype">
    <property ... />
</bean>

每次都会给你一个新的实例。每个实例都将使用注入的值进行初始化。

您也可以使用此注释:

@Scope("prototype")
于 2013-08-02T20:24:39.367 回答