码迷,mamicode.com
首页 > 编程语言 > 详细

Spring学习笔记--初始化和销毁Bean

时间:2016-05-28 14:09:22      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

可以使用bean的init-method和destroy-method属性来初始化和销毁bean。
定义一个Hero类:

package com.moonlit.myspring;

public class Hero {
    public void born() {
        System.out.println("the hero is born.");
    }
    public void defaultBorn() {
        System.out.println("the hero is born by default.");
    }
    public void doAction() {
        System.out.println("the hero save the world.");
    }
    public void dead() {
        System.out.println("the hero is dead.");
    }
    public void defaultDead() {
        System.out.println("the hero was dead by default.");
    }
}

配置其bean:

  <bean id="hero" class="com.moonlit.myspring.Hero"
           init-method="born"
           destroy-method="dead" />

还可以使用beans的default-init-method和default-destroy-method属性来设置所有bean的默认的初始化和销毁方法。(这种情况下如果bean有对应的方法则会执行对应的初始化和销毁方法)。
定义一个Demon类:

package com.moonlit.myspring;

public class Demon {
    public void defaultBorn() {
        System.out.println("the demon was born.");
    }
    public void doAction() {
        System.out.println("the demon do destroys");
    }
    public void defaultDead() {
        System.out.println("the demon is dead.");
    }
}

配置其Bean:

  <bean id="demon" class="com.moonlit.myspring.Demon" />

我们配置beans的default-init-method和default-destroy-method属性如下:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
    default-init-method="defaultBorn"
    default-destroy-method="defaultDead" >

样例程序PracticeHero用于测试效果:

package com.moonlit.practice;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.moonlit.myspring.Demon;
import com.moonlit.myspring.Hero;

public class PracticeHero {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext(
                "spring-idol.xml");
        Hero hero = (Hero) context.getBean("hero");
        hero.doAction();
        Demon demon = (Demon) context.getBean("demon");
        demon.doAction();
    }
}

输出结果如下:

the hero is born.
the demon was born.
the hero save the world.
the demon do destroys

不能看到销毁的效果,可能是因为程序结束的时候对象还没有执行销毁的方法。(暂时还不知道怎么检测destroy-method),但是可以看到init-method的方法。因为Hero的bean定义了init-method和destroy-method,所以程序会先找born()和dead()两个方法执行;但是Demon的bean没有定义init-method方法和destroy-method方法,所以程序会执行beans里面定义的default-init-method和default-destroy-method方法执行,所以输出的效果是这样的。

理解:使用bean元素的init-method和destroy-method元素可以定义一个bean在初始化和销毁时使用的方法;也可以通过beans的default-init-method和default-destroy-method元素来指定所有bean的默认初始化和销毁的方法。

 

Spring学习笔记--初始化和销毁Bean

标签:

原文地址:http://www.cnblogs.com/moonlightpoet/p/5537284.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!