zoukankan      html  css  js  c++  java
  • 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!

  • 相关阅读:
    JVM(随手笔记)
    linux常用操作(个人笔记)
    MySQL学习笔记(个人随手笔记)
    jquery对象和Dom对象的转化([0])
    函数防抖和函数节流
    数据持久化分析
    day.js处理相对时间
    外链资源403的处理
    前端实现图片预览的两种方式及使用
    监听器标准写法
  • 原文地址:https://www.cnblogs.com/rhythmK/p/3411409.html
Copyright © 2011-2022 走看看