在Spring中,bean可以被定义为两种模式:prototype(多例)和singleton(单例)
singleton(单例):只有一个共享的实例存在,所有对这个bean的请求都会返回这个唯一的实例。
prototype(多例):对这个bean的每次请求都会创建一个新的bean实例,类似于new。
Spring bean 默认是单例模式。
实战演示:
在配置文件中,修改这句代码为:
在测试类中,修改代码为:
<bean id="hi" class="com.test.Hi" init-method="init" scope="singleton">
<bean id="hi" class="com.test.Hi" init-method="init" scope="singleton">
ApplicationContext context = new FileSystemXmlApplicationContext("applicationContext.xml");
Hi hi1 = (Hi) context.getBean("hi");
Hi hi2 = (Hi) context.getBean("hi");
System.out.println(hi1);
System.out.println(hi2);
结果为:
结论:二个变量指向一个对象。
将配置文件改为:
<bean id="hi" class="com.test.Hi" init-method="init" scope="prototype">
其他的不变,运行测试类,结果为: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200115110642859.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMTczNTIz,size_16,color_FFFFFF,t_70)
结论:每次访问bean,均创建一个新实例。
此外,在springBoot项目中如果要配置单例或者多例,可以在对应的bean上加一个@scope()注解