Spring学习之一 bean的作用域 详细讲解

                             Spring Bean的作用域

 Spring是一个轻量级的开源应用开发框架,广泛应用于企业开发中,并且受到广大开发人员的喜欢。本篇只是针对spring中bean的作用域进行学习和总结。

   Bean作用域的分类

    bean的作用域分为五类:singleton ,prototype, request, session, global session 。

     Singleton 作用域

    此配置项是spring的默认项,也叫单例,在每个springIOC容器中一个bean定义对应一个对象实例,不同容器中不同。

    实验如下:bean配置如下


    bean的获取方式如下


结果如下:


如果将如上配置改为下面:

<bean id="myBean" class="com.pactera.spring.TestSingleton"  scope="singleton"/> 则结果仍然与上面一致。

prototype 作用域

    该作用域表示每次从工厂中获取bean时,都会创建一个新的bean。

    本例实验我们用包自动扫描和注解得方式去实现bean的定义


开启包注解自动扫描


获取bean


运行后结果如下:


request 作用域

该作用于只有在Web应用中才会起作用。表示每个请求中会创建一个实例化对象。

我们需要搭建一个springWebMVC框架,并声明一个bean实现ApplicationContextAware用来获取容器中的bean。


Controller层中要获取容器中的作用域声明为request的Bean.


MyStatus的注解:


运行服务器后两次请求http://localhost:8180/springMVC/test/hi.do(我的前端控制器中url-pattern配置的为*.do).日志结果显示如下:


Session作用域

和request作用域一样,也是只有在web应用中才起作用。每个session中同一个实例,不同session不同实例。

bean注解声明作用域为session


调用类


session过期时间设置为1分钟


启动服务器后调用请求:

两次请求间隔超过1分钟的结果如图:


结果证明不同session中实例不同。

两次请求时间不超过1分钟结果如图:


结果证明相同session中实例相同。

global session 作用域

此注解仅仅适用于portlet的web应用中,类似于http session。portlet web应用中的全局session可以被不同的portlet共享,同一个全局session中实例是同一个。由于不常用,所以不做代码层面的学习分析,仅作了解。

以上是对spring中bean的作用域的简单分析,后续会做源码分析。


    

    

    

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值