Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1257|回复: 0

spring生命周期管理

  [复制链接]

该用户从未签到

发表于 2011-10-16 18:14:35 | 显示全部楼层 |阅读模式
一初始化与销毁

1.通过设置bean的init-mothed属性指定初始化的方法,他的限制是方法无法接受任何参数,方法可以为static

2.实现InitializingBean接口的afterPropertiesSet()方法

3.最好的方法是在afterProptertiesSet()中调用自定义初始化方法

4.销毁单例对象可以通过指定bean的destroy-method属性,指定销毁时执行的方法名

5.销毁单例对象可以通过实现DisposableBean的destroy实现

6.销毁方法的触发是通过生成该单例对象的BeanFactory的destroySingletons方法的执行而触发

7.通过指定 ShutdownHook可以指定一个线程来执行BeanFactory的destroySingletons方法

8.如果同时指定两种初始化和销毁方法,初始化接口方法首先运行,参数话初始化方法后运行;销毁时,接口中的销毁方法首先运行,参数指定的销毁方法后运行

二代码

1bean

package study.spring;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.DisposableBean;

public class ContextTest implements InitializingBean,DisposableBean {

    private String content;
   
    public void init(){ System.out.println("mothed init run."); }
   
    public void afterPropertiesSet() throws java.lang.Exception{
        if (content== null) content="hello";
        System.out.println("afterPropertiesSet run.");
    }
   
    public String getContent(){ return content; }
   
    public void setContent(String content){ this.content = content; }
   
    public void dispose(){ System.out.println("mothed despose run."); }
   
    public void destroy(){
        content = null;
        System.out.println("destroy run.");
    }
   
}

2测试程序

package study.spring;

import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;

public class SimpleInject{
   
   
   
   public static void main(String[] args){
    ConfigurableListableBeanFactory beanFactory3 = new XmlBeanFactory(new FileSystemResource("./spring_xml/beans_teacher.xml"));
    ConfigurableListableBeanFactory beanFactory1 = new XmlBeanFactory(new FileSystemResource("./spring_xml/beans.xml"),beanFactory3);
    ConfigurableListableBeanFactory beanFactory2 = new XmlBeanFactory(new FileSystemResource("./spring_xml/beans_address.xml"));      
    Runtime.getRuntime().addShutdownHook( new Thread(new ShutdownHook(beanFactory2)));
    Student student1 = (Student)beanFactory1.getBean("student");
    ContextTest ct = (ContextTest)beanFactory2.getBean("context");
    System.out.println(ct.getContent());
   }

}

class ShutdownHook implements java.lang.Runnable{
      
       private ConfigurableListableBeanFactory cbf;
      
       public ShutdownHook(ConfigurableListableBeanFactory cbf){ this.cbf = cbf; }
      
       public void run(){
          cbf.destroySingletons();
       }
      
   }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-23 19:41 , Processed in 0.351596 second(s), 45 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表