zoukankan      html  css  js  c++  java
  • 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();
    	}



  • 相关阅读:
    jQuery链式编程时修复断开的链
    只是一个用EF写的一个简单的分页方法而已
    asp.net Core 获取应用程序所在目录的2种方式
    FineUI使用记录
    C#判断一个string是否为数字
    MVC中利用ViewBag传递Json数据时的前端处理方法
    基于Ajax的文件上传使用FileInput插件(使用谷歌翻译作者的原文,大致意思是对的,自己把握)
    ansible中tag的用法
    rabbitMQ中vhost虚拟主机的理解
    一些比较好的链接
  • 原文地址:https://www.cnblogs.com/raphael5200/p/5114742.html
Copyright © 2011-2022 走看看