标签:rtl 延迟 组件 class inf false bit ima beans
Spring中Bean的作用域有五种,分别是singleton、prototype、request、session、globalSession。其中request、session、globalSession这三个作用域只有在web开发中才会使用到。
当在 Spring 中定义一个bean时,你必须声明该 bean 的作用域的选项,若没有声明则默认作用域是singleton。
1 singleton 该作用域将 bean 的定义的限制在每一个 Spring IoC 容器中的一个单一实例。
*使用:什么都不做,默认就是单例模式,但是你也可以显示的加一个scope,例如:
<bean id="user" class="com.zhbit.pojo.User" scope="singleton"/>
如果你还是不明白什么是单例模式,那就举个例子来说明:
@Test public void test(){ ApplicationContext context = new ClassPathXmlApplicationContext("beans2.xml"); User user = context.getBean("user", User.class); User user2 = context.getBean("user", User.class); System.out.println(user==user2); }
运行结果:
输出结果为true。证明了user和user2是同一个对象!
结论:只要bean的作用域是singleton ,getBean()方法中参数用的是同一个bean的id,则实例化的就是对象就是同一个。
<bean id="user" class="com.kuang.pojo.User" scope="prototype"/>
举例证明:
@Test public void test(){ ApplicationContext context = new ClassPathXmlApplicationContext("beans2.xml"); User user = context.getBean("user", User.class); User user2 = context.getBean("user", User.class); System.out.println(user==user2); } }
输出结果为false,证明 user和user2不是同一个对象。
标签:rtl 延迟 组件 class inf false bit ima beans
原文地址:https://www.cnblogs.com/bear7/p/12530699.html