您好,欢迎访问一九零五行业门户网

Java Spring Bean生命周期管理的示例分析

spring bean的生命周期管理一、spring bean的生命周期
通过以下方式来指定bean的初始化和销毁方法,当bean为单例时,bean归spring容器管理,spring容器关闭,就会调用bean的销毁方法当bean为多例时,bean不归spring容器管理,spring容器关闭,不会调用bean的销毁方法
二、通过@bean的参数(initmethod ,destroymethod)指定bean的初始化和销毁方法1、项目结构
2、personpublic class person { public person(){ system.out.println("person 创建了..."); } public void init(){ system.out.println("person 初始化了..."); } public void destroy(){ system.out.println("person 被销毁了..."); }}
3、bean注册配置类(单实例)import com.dashu.bean.person;import org.springframework.context.annotation.*;@configurationpublic class beanconfig { @bean(initmethod = "init",destroymethod = "destroy") public person person(){ return new person(); }}
4、测试类import com.dashu.bean.person;import com.dashu.config.beanconfig;import org.springframework.context.annotation.annotationconfigapplicationcontext;public class main { public static void main(string[] args) { //加载配置类获取容器 annotationconfigapplicationcontext annotationconfigapplicationcontext = new annotationconfigapplicationcontext(beanconfig.class); //获取bean person bean = annotationconfigapplicationcontext.getbean(person.class); //关闭容器 annotationconfigapplicationcontext.close(); }}
5、测试结果
6、bean注册配置类(多实例)import com.dashu.bean.person;import org.springframework.context.annotation.*;@configurationpublic class beanconfig { @scope("prototype") @bean(initmethod = "init",destroymethod = "destroy") public person person(){ return new person(); }}
7、测试结果
三、bean实现接口initializingbean, disposablebean1、personimport org.springframework.beans.factory.disposablebean;import org.springframework.beans.factory.initializingbean;public class person implements initializingbean, disposablebean { public person(){ system.out.println("person 创建了..."); } @override public void afterpropertiesset() throws exception { system.out.println("person 初始化了..."); } @override public void destroy() throws exception { system.out.println("person 被销毁了..."); }}
2、bean注册配置类import com.dashu.bean.person;import org.springframework.context.annotation.*;@configurationpublic class beanconfig { @bean public person person(){ return new person(); }}
3、测试结果
四、通过注解@postconstruct和@predestroy@postconstruct:标注在bean的初始化方法上@predestroy:标注在bean的销毁方法上
1、personimport javax.annotation.postconstruct;import javax.annotation.predestroy;public class person { public person(){ system.out.println("person 创建了..."); } @postconstruct public void init(){ system.out.println("person 初始化了..."); } @predestroy public void destroy(){ system.out.println("person 被销毁了..."); }}
2、测试结果
五、使用接口beanpostprocessor实现类(后置处理器)1、项目结构
2、personimport org.springframework.stereotype.component;import javax.annotation.postconstruct;import javax.annotation.predestroy;@componentpublic class person { public person(){ system.out.println("person 创建了..."); } @postconstruct public void init(){ system.out.println("person 初始化了..."); } @predestroy public void destroy(){ system.out.println("person 被销毁了..."); }}
3、bean注册配置类import org.springframework.context.annotation.*;@configuration@componentscan({"com.dashu"})public class beanconfig {}
4、beanpostprocessor实现类(后置处理器)import org.springframework.beans.beansexception;import org.springframework.beans.factory.config.beanpostprocessor;import org.springframework.beans.factory.config.instantiationawarebeanpostprocessor;import org.springframework.lang.nullable;import org.springframework.stereotype.component;/** * 后置处理器:初始化前后进行处理工作 */@componentpublic class mybeanpostprocessor implements beanpostprocessor { /** * 初始化之前工作 * @param bean * @param beanname * @return * @throws beansexception */ @override public object postprocessbeforeinitialization(object bean, string beanname) throws beansexception { system.out.println("初始化之前..."+beanname+"=["+bean+"]"); return bean; } /** * 初始化之后工作 * @param bean * @param beanname * @return * @throws beansexception */ @override public object postprocessafterinitialization(object bean, string beanname) throws beansexception { system.out.println("初始化之后..."+beanname+"=["+bean+"]"); return bean; }}
5、测试结果
以上就是java spring bean生命周期管理的示例分析的详细内容。
其它类似信息

推荐信息