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