Java框架 Spring (二)启加载VS懒加载VS非单例

前言

前面的案例都是启加载方式,启动Spring容器时创建对象,所以是饿汉式的单例模式,接下来我们通过修改bean的属性来修改为懒加载,非单例,并比较他们的初始化以及销毁时机。

看过西游记的都知道,最懒得是猪八戒,那么我们就用猪八戒这个对象作为懒加载来做实验,现在,创建孙悟空,猪八戒,猴毛对象

创建孙悟空,猪八戒对象,以及测试方法

//孙悟空类
public class MonkeyKing {
	public MonkeyKing() {
		System.out.println("---------------孙悟空创建-------------");
	}
	public void speak() {
		System.out.println("我要这铁棒有何用");
	}
	public void init() {
		System.out.println("---*** 初始化孙悟空 ***----");
	}
	public void destroy() {
		System.out.println("---*** 销毁孙悟空 ***----");
	}
}

//猪八戒类
public class PigEight {
	public PigEight() {
		System.out.println("---------------猪八戒创建-------------");
	}
	public void speak() {
		System.out.println("大师兄,师傅被妖怪抓走了");
	}
	
	public void init() {
		System.out.println("---*** 初始化猪八戒 ***----");
	}
	public void destroy() {
		System.out.println("---*** 销毁猪八戒  ***----");
	}
}

//测试
@Test
void test05() {
	ApplicationContext appc = new ClassPathXmlApplicationContext(XML);
	MonkeyKing sun1 = (MonkeyKing) appc.getBean("id_monkey");
	System.out.print(sun1+":");
	sun1.speak();
	MonkeyKing sun2 = (MonkeyKing) appc.getBean("id_monkey");
	System.out.print(sun2+":");
	sun2.speak();
	PigEight z8j = (PigEight) appc.getBean("id_pig");
	System.out.print(z8j+":");
	z8j.speak();
	
	//关闭资源时销毁
	((ClassPathXmlApplicationContext)appc).close();
	
}

启加载

<!-- 默认为单例,启加载 -->
<bean id="id_monkey" class="club.laobainb1314.p04.MonkeyKing"  />
<bean id="id_pig" class="club.laobainb1314.p04.PigEight" />

懒加载(lazy-init="true")

<bean id="id_monkey" class="club.laobainb1314.p04.MonkeyKing"  />
<!-- 给猪八戒加上懒加载 -->
<bean id="id_pig" class="club.laobainb1314.p04.PigEight" lazy-init="true"/>

 

非单例(scope="prototype")

<!-- 孙悟空添加scope="prototype"转为非单例 -->
<bean id="id_monkey" class="club.laobainb1314.p04.MonkeyKing" scope="prototype" />
<bean id="id_pig" class="club.laobainb1314.p04.PigEight" lazy-init="true"/>

总结

 默认,启动Spring容器时,创建对象,这样做的好处是一旦类有错误,容器启动即可发现。Spring容器中的对象,默认单例(scope="singleton"),可以减轻JVM管理对象的负担,设置scope="prototype",改为多实例,此时自动变为懒加载。

原型必懒,原型不销

posted @ 2019-06-18 18:09  机卸师老白  阅读(36)  评论(0)    收藏  举报