8.2.2 指定Bean的作用域
8.2.2 指定Bean的作用域
XML方式如何指定Bean的作用域
当使用XML
配置方式来配置Bean
实例时,可以通过在<bean>
元素上设置scope
属性来指定Bean
实例的作用域,没有指定scope
属性的Bean
实例的作用域默认是singleton
.
通过@Scope指定作用域
当采用零配置方式来管理Bean
实例时,可使用@Scope
注解,只要在该注解中提供作用域的名称即可。例如可以定义如下Java
类
1 | // 指定该bean的作用域为prototyep |
自定义作用域
在一些极端的情况下,如果不想使用基于注解的方式来指定作用域,而是希望提供自定义的作用域解析器,让自定义的解析器实现ScopeMetadataResolver
接口,并提供自定义的作用域解析策略,然后在配置扫描器时指定自定义的作用域解析器的全限定类名即可。看如下配置片段:
1 | <beans ...> |
新增的简写的作用域注解
此外,从Spring4.3
开始还新增了@ApplicationScope
、@SessionScope
、@RequestScope
这3个注解,它们分别对应于@Scope("application")
、 @Scope("session")
、@Scope("request")
,且proxyMode
属性被设置为ScopedProxyMode.TARGET_CLASS