Rhythmk 一步一步学 JAVA (13) Spring-2 之Ben懒加载以及生命周期,单例

1、定义Demo类:

package com.rhythmk.spring;



public class User {

  

	public void Init ()

	{

		System.out.println("User 对象被 创建!");

	}

	

	// 计数器

	public int Count=0;

	public void Say()

	{

		this.Count++;

		System.out.println("User 被"+this.Count+"次初始!");

	}

	

	public void Destory()

	{

    	System.out.println("User 对象被销毁!");

	}

}

 

2、init-method:对象初始执行

    destroy-method:对象销毁执行:

<bean id="user" class="com.rhythmk.spring.User" init-method="Init"  destroy-method="Destory" >

</bean>

执行单元测试:

@Test

	public void test() {

		

		BeanFactory bean=new ClassPathXmlApplicationContext("applicationContext.xml");

		User user=(User)bean2.getBean("user");

		user.Say();

		

	}



输出:

   User 对象被 创建!

   User 被1次初始!

 3、scope  包括 singleton单例模式  (默认)

                 prototype,Request, Session, Global Session

   默认applicationContext.xml 配置 添加测试代码:

	private  static BeanFactory bean= new ClassPathXmlApplicationContext("applicationContext.xml");

	

	@Test

	public void test1() {

		

	    User user=(User)bean.getBean("user");

		user.Say();

	}

	

	@Test

	public void test2() {

		User user=(User)bean.getBean("user");

		user.Say();

	}

  输出:

User 对象被 创建!
User 被1次初始!
User 被2次初始!

修改applicationContext.xml 添加 scope=prototype

<bean id="user" class="com.rhythmk.spring.User" init-method="Init"  destroy-method="Destory" scope="prototype">

</bean>

执行如上测试代码:

  输出:

User 对象被 创建!
User 被1次初始!
User 被1次初始!

 4、  lazy-init 默认为 false ,为true时,则在执行“BeanFactory bean= new ClassPathXmlApplicationContext("applicationContext.xml");”

    并未执行初始化,只有在 bean.getBean("user") 才会执行函数初始:

package com.rhythmk.spring;



public class User {

	// 计数器

	public int Count=0;

	public User()

	{

		System.out.println("User 被"+this.Count+"次初始!");

	}

	

	public void Say()

	{

		this.Count++;

		System.out.println("User.Say!");

	}

	

	

}

  

4.1 、默认配置:
<bean id="user" class="com.rhythmk.spring.User" lazy-init="false"  >

</bean>

输出:

   

User 被0次初始!
开始执行测试!
User.Say!

4.2 、调整配置:

<bean id="user" class="com.rhythmk.spring.User" lazy-init="true"  >

</bean>

 

   输出:

开始执行测试!
User 被0次初始!
User.Say!

 

 

你可能感兴趣的:(spring)