使用Spring创建非bean实例

时间:2013-08-02 16:35:05

标签: spring jsr330

我确信之前已经被问了一百次,但我似乎无法找到问题,所以请随时向我推荐其他stackoverflow答案。

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

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

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

这会像Guice这样处理吗?你会如何使用JSR-330功能呢?

1 个答案:

答案 0 :(得分:0)

如果你愿意,你可以把豆子做成非单身人士。取决于你是否对XML有好处:

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

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

您也可以使用此注释:

@Scope("prototype")