其他分享
首页 > 其他分享> > Spring03-Bean的作用域

Spring03-Bean的作用域

作者:互联网

通过Bean元素的scope属性指定Bean的作用域,常用的作用域又singleton(单例)和prototype(原型)两类。

1.singleton

singleton是Spring容器默认的作用域。该类型的Bean在Spring容器中将只有一个实例(无论有多少个Bean引用它,始终指向同一个对象)。特点是1.在容器启动之前就已经创建好对象,保存在容器中;2.任何获取的对象都是之前创建好的对象。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 <bean id="student" class="com.ioc.Student"></bean>
</beans>

测试

public void test03() {
  ApplicationContext ioc = new ClassPathXmlApplicationContext("ioc.xml");
  System.out.println("===================================");
  Student stu01 = (Student)ioc.getBean("student");
  Student stu02 = (Student)ioc.getBean("student");
  System.out.println(stu01.hashCode() + "====" + stu02.hashCode());
  System.out.println(stu01 == stu02);
 }

在这里插入图片描述

2.prototype

每次通过Spring容器获取的prototype定义的Bean时,容器都将创建一个新的Bean实例。特点是1.容器启动时默认不会创建prototype的Bean;2.获取的时候会创建一个新的Bean实例。

例子

在这里插入图片描述

public void test03() {
  ApplicationContext ioc = new ClassPathXmlApplicationContext("ioc.xml");
  System.out.println("===================================");
  Student stu01 = (Student)ioc.getBean("student");
  Student stu02 = (Student)ioc.getBean("student");
  System.out.println(stu01.hashCode() + "====" + stu02.hashCode());
  System.out.println(stu01 == stu02);
 }

在这里插入图片描述

i_meteor_shower 发布了28 篇原创文章 · 获赞 44 · 访问量 2759 私信 关注

标签:stu02,stu01,作用域,Spring03,Bean,Student,ioc,out
来源: https://blog.csdn.net/i_meteor_shower/article/details/104125772