Spring Bean 生命周期 三种表示方法
来源:互联网 发布:淘宝老顾客回购权重 编辑:程序博客网 时间:2024/05/15 17:51
文章的索引:
- 通过接口InitializingBean,DisposableBean实现Bean生命周期。
- 通过JavaEE注解@PostConstruct,@PreDestroy实现Bean生命周期。
- 通过配置文件标签属性init-method和destroy-method实现Bean生命周期。
因为演示的需要,首先给出一个普通的bean:
public class SimpleBean { private String name; // set 注入 public void setName(String name) { this.name = name; } public String getName() { return name; }}
方法一:bean分别实现接口InitializingBean和DisposableBean,并且复写相应的方法afterPropertiesSet和destroy。
import org.springframework.beans.factory.InitializingBean;import org.springframework.beans.factory.DisposableBean;public class SimpleBean implements InitializingBean,DisposableBean { private String name; public void setName(String name) { this.name = name; } public String getName() { return name; } @Override public void afterPropertiesSet() { System.out.println("属性设置完后执行该方法"); } @Override public void destroy() { System.out.println("结束前执行一些清理工作"); }}
在Spring bean配置文件中定义该bean:(配置文件名称为SpringConfig.xml)
<?xml version="1.0" encoding="UTF-8"?><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"> <bean id="simple" class="SimpleBean"> <property name="name" value="I'm a Simple Bean"> </bean></beans>
运行它:
public class App { public static void main( String[] args ) { ConfigurableApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"SpringConfig.xml"}); SimpleBean simple = (SimpleBean )context.getBean("simple"); System.out.println(simple.getName()); context.close(); }}
打印结果:
属性设置完后执行该方法I'm a Simple Bean结束前执行一些清理工作
********************************************************************************************************************
方法二:利用JavaEE的注解@PostConstruct和@preDestroy。
public class SimpleBean { private String name; public void setName(String name) { this.name = name; } public String getName() { return name; } @PostConstruct public void initIt() { System.out.println("属性设置完后执行该方法"); } @PreDestroy public void destroyIt() { System.out.println("结束前执行一些清理工作"); }}
为了让Spring容器意识到该注解,需要在配置文件中加上标签<context:annotation-config />。
<?xml version="1.0" encoding="UTF-8"?><beans...> <context:annotation-config /> <bean id="simple" class="SimpleBean"> <property name="name" value="I'm a Simple Bean"> </bean></beans>
运行它(依然是原来的main方法):
打印结果同上。
********************************************************************************************************************
方法三:在Spring bean配置文件的bean标签中添加属性init-method和destroy-method。
先看看配置文件:
<?xml version="1.0" encoding="UTF-8"?><beans ...> <bean id="simple" class="SimpleBean" init-method="myInit" destroy-method="myDestroy"> <property name="name" value="I'm a Simple Bean"> </bean></beans>
配置文件中定义了初始化方法为myInit,销毁方法为myDestroy,以上方法必须为void,且无参数。
修改后的bean如下:
public class SimpleBean { private String name; public void setName(String name) { this.name = name; } public String getName() { return name; } public void myInit() { System.out.println("属性设置完后执行该方法"); } public void myDestroy() { System.out.println("结束前执行一些清理工作"); }}
运行它(依然是原来的main方法):
打印结果同上。
如果配置文件中有许多bean,为了减少init-method和destroy-method的数量,可以在根元素(beans)中添加属性default-init-method和default-destroy-method定义所有bean的默认初始化方法和销毁方法。(全局性)
<beans default-init-method="init" default-destroy-method="destroy" ...> <bean id="..." class="..."> <!-- collaborators and configuration for this bean go here --> </bean></beans>--------------------------------------------------------------------------------
个人更喜欢第三种方法,因为第三种方法无需依赖其它接口或类(比如InitializingBean和DisposableBean),无需在配置文件中定义标签<context:annotation-config />(针对第二种方法),另外可以自定义自己的方法名字(针对第一种方法)。
- Spring Bean 生命周期 三种表示方法
- spring bean的生命周期三种控制方法
- 【Spring】- Bean的生命周期的init和destroy方法的三种方式
- spring bean实现init/destory生命周期方法的三种方式
- Spring bean 实现生命周期的三种解决方案
- Spring bean 实现生命周期的三种解决方案
- Spring bean 实现生命周期的三种解决方案
- Spring 三种实例化Bean方法
- spring三种实例化bean方法
- Spring的Bean的生命周期(三)
- (3)Spring的三种实例 bean 的方式 以及 Spring中bean的作用域。 以及 bean的生命周期
- (2)Spring的三种实例 bean 的方式 以及 Spring中bean的作用域。 以及 bean的生命周期
- Spring之Bean生命周期方法调用
- Spring Bean的生命周期管理方法
- Spring 框架Bean的生命周期方法
- spring三种实例化Bean的方式和管理Bean的作用域和Bean的生命周期
- Spring -- spEL&Bean的生命周期&工厂方法配置Bean
- spring中构造bean实例的三种方法
- 写给开发者看的关系型数据库设计
- java 接口和内部类
- char 组成的字符串循环右移N位
- 使用C++进行WMI查询的简单封装
- Android中利用Fragment显示为两屏
- Spring Bean 生命周期 三种表示方法
- 学外语
- JDK 环境变量
- hdu 2710 (基础)
- SimpleAdapter
- 分析Cocos2d Android 项目的生成和运行
- Value '0000-00-00' can not be represented as java.sql.Date错误修改
- Mysql和Oracle的卸载
- WPF自定义一个MessageBox介绍