在spring中的bean有如下的几种作用域:
在此阶段,我们现在只讨论单例模式(singleton模式)和原型模式(prototype模式)。因为其余的四种模式,是在web中应用的,会在springMVC中详细讲解。
一、单例模式(singleton)
所谓的单例模式,就是通过同一个applicationContext对象的getBean()获取多个对象, 其本质上是同一个。也就是说即使你通过同一个applicationContext的getBean()创建了多个对象,其实其底层还是只是创建了一个对象,即,返回的对象的hashCode是相同的。
配置:
<bean id="address" class="com.sdpei.pojo.Address" scope="singleton">
<property name="province" value="山东省"/>
<property name="county" value="济南市"/>
<property name="city" value="历城区"/>
</bean>
测试:
@Test
public void getAddress(){
ApplicationContext application = new ClassPathXmlApplicationContext("applicationContext.xml");
Address address1 = (Address) application.getBean("address");
Address address2 = (Address) application.getBean("address");
System.out.println(address1.hashCode());
System.out.println(address2.hashCode());
System.out.println(address1==address2);
}

二、原型模式(prototype)
原型模式刚好和单例模式相反,即使是通过同一个applicationContext对象的getBean()获取对象,那么每次都会创建新的对象,也就是每次创建的对象的hashCode的值都是不同的。
配置:
<bean id="address" class="com.sdpei.pojo.Address" scope="prototype">
<property name="province" value="山东省"/>
<property name="county" value="济南市"/>
<property name="city" value="历城区"/>
</bean>
测试:
@Test
public void getAddress(){
ApplicationContext application = new ClassPathXmlApplicationContext("applicationContext.xml");
Address address1 = (Address) application.getBean("address");
Address address2 = (Address) application.getBean("address");
System.out.println(address1.hashCode());
System.out.println(address2.hashCode());
System.out.println(address1==address2);
}

版权声明:本文为m0_45067620原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。