Spring Bean中的作用域

Bean 的作用域

  • 在Spring中不仅可以完成Bean的实例化,还可以为Bean指定作用域。

Bean的作用域


  • singleton: 默认的作用域,使用singleton定义的Bean在Spring容器中只有一个Bean实例
  • prototype: Spring容器每次获取prototype定义的Bean,容器都会创建一个新的Bean实例
  • request : 在一次Http请求中容器将返回一个Bean实例,不同的Http请求返回不同的Bean实例。仅在Web Spring应用程序上下文中使用
  • session :在一个HTTP Session中,容器将返回同一个Bean实例。仅在Web Spring应用程序上下文中使用
  • application: 为每个ServletContext对象创建一个实例,即同一个应用共享一个Bean实例,仅在WEB Spring应用程序上下文中使用
  • websocket: 为每个WebSocket对象创建一个Bean实例。仅在Web Spring应用程序上下文中使用
    singleton以及prototype是最常用的两种

singleton作用域

  • 当将bean的scope设置为singleton时,springIOC容器仅生成和管理一个Bean实例。在使用id或name获取Bean实例时,Ioc容器将返回共享的Bean实例。
  • 由于singletion是scope默认方法,因此有两种方法将bean的scope设置为singletion。
<bean id="constructorInstance" class="instance.BeanClass"/>

<bean id="consttuctorInstance" class="instance.BeanClass" scope="singletion/>

- 测试代码

package test;

import instance.BeanClass;
import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestInstance {
    public static void main(String[] args) {
        //初始化Spring容器applicationContext,加载配置文件
        ApplicationContext appCon=new ClassPathXmlApplicationContext("applicationContext");
        //  测试构造方法实例化Bean
        BeanClass b1=(BeanClass) appCon.getBean("constructorInstance");
        System.out.println(b1+b1.message);
        BeanClass b2= (BeanClass) appCon.getBean("constructorInstance");
        System.out.println(b2+b2.message);
        }
        }

结果

在这里插入图片描述

prototype作用域

当将bean的scope设置为prototype时,Spring Ioc容器将每次请求创建一个新的实例。

结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值