使用注释创建原型范围的 Spring bean?
Posted
技术标签:
【中文标题】使用注释创建原型范围的 Spring bean?【英文标题】:Create prototype scoped Spring bean with annotations? 【发布时间】:2012-04-12 21:12:34 【问题描述】:是否可以将以下XML configuration 转换为基于注释的?
<bean id="myBean" class="my.package.MyBeanClass" scope="prototype" />
我正在使用 Spring 2.5.6。
【问题讨论】:
【参考方案1】:你可以使用@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
注解。
@Service
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class CustomerService
// ...
-
Spring API Docs。
Example of the mapping。
Scope annotation reference.
【讨论】:
还有一个不错的常量可以用来代替字符串:BeanDefinition.SCOPE_PROTOTYPE
Scope注解Javadoc中,推荐的常量是ConfigurableBeanFactory.SCOPE_PROTOTYPE
在 Spring 4 中删除了 BeanDefinition 类吗?
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
或者使用@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
节省一点打字时间【参考方案2】:
截至目前spring version 4.3.2
,我们可以使用@Scope("prototype")注解。
@Scope("prototype")
@Repository
public class MovieFinderImpl implements MovieFinder
// ...
【讨论】:
我会说使用提供的常量,如接受的答案,更好。 @herman 是什么让它变得更好?是否有这方面的 JSR 标准? @Steve 以防字符串更改(不太可能)或您想使用 IDE 搜索引用【参考方案3】:在 Spring 5 中,可以如下使用
@Component("myBean")
@Scope("prototype")
public class MyBeanClass//your logics
【讨论】:
以上是关于使用注释创建原型范围的 Spring bean?的主要内容,如果未能解决你的问题,请参考以下文章