• Spring、Bean的生命周期


    1、默认情况下,在Bean容器被实例化的时候,bean对象将被创建:

    public class PersonServiceImpl implements PersonIService {
    
    	public PersonServiceImpl(){
    		System.out.println("初始化!!!");
    	}
    	@Override
    	public void helloSpring() {
    		System.out.println("Hello Spring!");
    	}
    }

    <bean id="personIService" class="cn.server.impl.PersonServiceImpl"/>

    测试:

    	@Test
    	public void test() {
    		ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
    		//PersonIService personIService=(PersonIService)ac.getBean("personIService");
    	}

    结果:



    2、设置bean的lazy-init属性可以决定Bean是的实例对象是否使用懒加载,默认lazy-init=“false”:   当lazy-init设置为True的时候,只有Bean被实例的时候才调用:

    	@Test
    	public void test() {
    		ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
    		PersonIService personIService=(PersonIService)ac.getBean("personIService");
    	}

    <bean id="personIService" class="cn.server.impl.PersonServiceImpl" lazy-init="true"/>

    3、在bean被实例之前和在bean实例之后都可以执行某些方法,只要设置bean的init-method属性和destroy-method方法即可:

    public class PersonServiceImpl implements PersonIService {
    
    	public void initBean(){
    		System.out.println("被实例之前调用");
    	}
    	public void destoryBean(){
    		System.out.println("实例被关闭之后调用");
    	}
    	@Override
    	public void helloSpring() {
    		System.out.println("Hello Spring!");
    	}
    }

    <bean id="personIService" class="cn.server.impl.PersonServiceImpl" 
    	lazy-init="false" init-method="initBean" destroy-method="destoryBean"/>

    测试代码:

    	@Test
    	public void test() {
    		AbstractApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
    		PersonIService personIService=(PersonIService)ac.getBean("personIService");
    		personIService.helloSpring();
    		ac.close();
    	}



  • 相关阅读:
    jqueryeasyui 使用笔记
    怎么查看端口占用情况?
    Ie6 Ie7 双倍padding
    Javascript获取URL
    fckeditor,用p替代div标签设置对齐方式
    ZenCart安全建站的几个措施和步骤
    复选框二选一 javascript
    dedecms从php设置里面去掉index.html
    ajax调用webservice返回DataTable "序列化类型为“System.Reflection.Module”的对象时检测到循环引用
    无题
  • 原文地址:https://www.cnblogs.com/raphael5200/p/5114742.html
Copyright © 2020-2023  润新知