弹簧范围引用作为枚举?

2022-09-04 06:08:19

也许我错过了一些东西,但是没有提供静态引用的类吗?Scope.PROTOTYPE, Scope.SINGLETON

还是我总是必须使用非类型安全字符串作为作用域?

@Scope("prototype")
@Scope("singleton")

答案 1

根据Scope的文档,该元素的类型是 ,而不是某个枚举常量。因此,我们正在搜索一个类,其中公开了元素的可能值。valueStringvalue

BeanDefinition是你要找的类。它提供了几个字段,但您可能对这两个字段感兴趣:public static String

SCOPE_SINGLETON
SCOPE_PROTOTYPE

例如,它们可以像这样使用:

@Scope(value = BeanDefinition.SCOPE_PROTOTYPE)

我建议重复使用它们,而不是一直设置字符串文本,因为您可能会做一些拼写错误。


答案 2

可用于避免文本字符串的常量包括:

ConfigurableBeanFactory.SCOPE_SINGLETON 
ConfigurableBeanFactory.SCOPE_PROTOTYPE
WebApplicationContext.SCOPE_REQUEST
WebApplicationContext.SCOPE_SESSION

来源:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Scope.html