配置Bean的作用域
Posted yanguobin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置Bean的作用域相关的知识,希望对你有一定的参考价值。
一、Spring中Bean的5个作用域
在Spring 2.0及之后的版本中,Bean的作用域被划分为5种。如下
- singleton 默认值。以单例模式创建Bean的实例,即容器中该Bean的实例只有一个
- prototype 每次从容器中获取Bean时,都会创建一个新的实例
- request 用于Web应用环境,针对每次Http请求都会创建一个实例
- session 用于Web应用环境,同一个回话共享同一个实例,不同的回话使用不同的实例
- global session 仅在Portlet的Web应用中使用,同一个全局回话共享一个实例。对于非Portlet环境,等同于session
singleton是默认的作用域,即默认情况下Spring为每个Bean仅创建一个实例。对于不存在线程安全问题的组件,采用这种方式可以大大减少创建对象的开销,提高运行效率。而对于存在线程安全问题的组件,可以使用prototype作用域。如下
<bean id="userService" class="edu.cn.service.Impl.UserServiceImpl" scope="prototype"> </bean>
二、使用注解指定Bean的作用域
对于使用注解声明的Bean组件,如需修改其作用域,可以使用@Scope注解实现。如下
@Service @Scope("prototype") public class UserServiceImpl implements UserService { //省略 }
以上是关于配置Bean的作用域的主要内容,如果未能解决你的问题,请参考以下文章
Spring学习四----------Bean的配置之Bean的配置项及作用域
Bean 注解(Annotation)配置- Bean作用域与生命周期回调方法配置