配置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的作用域

Spring学习四----------Bean的配置之Bean的配置项及作用域

Bean 注解(Annotation)配置- Bean作用域与生命周期回调方法配置

8 -- 深入使用Spring -- 2...2 指定Bean的作用域

SpringIOC容器-xml配置bean-bean的作用域