IOC Bean管理 Bean作用域

文章详细介绍了Spring框架中Bean的两种作用域:单例(Singleton)和原型(Prototype)。单例Bean在容器启动时创建一个实例,而多例Bean在每次请求时都会创建新的实例。配置XML中通过scope属性定义Bean的作用域,singleton表示单例,prototype表示多例。
摘要由CSDN通过智能技术生成

IOC Bean管理 Bean作用域

Bean对象

Bean标签分为单实例和多实例属性

  • 单实例:使用单实例属性Bean创建的多个对象其实是同一个单个实例对象。
  • 多实例:使用多实例属性Bean创建的多个对象是多个不同的实例对象。

单实例

Bean创建时默认为单实例;
编写一个测试类:

package com.xjy.spring.factoryBean.beanRuleArea;

public class singleBean {
}

创建它的Bean对象

<bean id="SingleBean" class="com.xjy.spring.factoryBean.beanRuleArea.singleBean" scope="singleton">
</bean>
  • scope:Bean标签属性,singleton代表单实例(不写也可以,因为Bean默认是单实例)

TestDemo:

public class TestDome {
    public static void main(String[] args) {
        ApplicationContext context =
                new ClassPathXmlApplicationContext("SpringConfig.xml");
        singleBean singleBean1 =
                context.getBean("SingleBean", singleBean.class);
        singleBean singleBean2 =
                context.getBean("SingleBean", singleBean.class);
        System.out.println(singleBean1);
        System.out.println(singleBean2);
    }
}

创建两个singleBean对象,输出他们的内存地址

输出:

com.xjy.spring.factoryBean.beanRuleArea.singleBean@4f83df68
com.xjy.spring.factoryBean.beanRuleArea.singleBean@4f83df68

进程已结束,退出代码0

可以看到输出的值相同,代表两个实例都是同一个对象

多实例

多实例需要使用scope属性的prototype参数声明Bean为多实例Bean

创建类:

package com.xjy.spring.factoryBean.beanRuleArea;
public class prototypeBean {
}

配置XML

<bean id="Prototype" class="com.xjy.spring.factoryBean.beanRuleArea.prototypeBean" scope="prototype">
</bean>
  • scope:“prototype”:声明此Bean为多实例

测试输出

com.xjy.spring.factoryBean.beanRuleArea.prototypeBean@6cf0e0ba
com.xjy.spring.factoryBean.beanRuleArea.prototypeBean@7d8995e

进程已结束,退出代码0

两个输出不同,说明两个为不同对象;

区别

XML写法区别

<!--Bean作用域-单实例和多实例-->
 <!--单实例-->
  <bean id="SingleBean"
class="com.xjy.spring.factoryBean.beanRuleArea.singleBean"
scope="singleton">
</bean>
 <!--多实例-->
 <bean id="PrototypeBean"
class="com.xjy.spring.factoryBean.beanRuleArea.prototypeBean"
scope="prototype">
</bean> 

运行:

  • 单实例-Singleton:单实例Bean对象在加载配置文件时就会被创建
  • 多实例-Prototype:多实例Bean对象在使用时才会被创建
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JAVA小菜鸡223

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值