欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringBean生命周期-初始化和销毁

程序员文章站 2022-06-03 09:06:19
...

Spring Bean初始化和销毁:

在实际开发中经常需要在Bean使用之前或者之后作写必要的操作,Spring对Bean的生命周期的操作提供了支持。下面是SpringBean的生命周期流程图:
SpringBean生命周期-初始化和销毁
根据上面的流程图我们有三种方式实现对Bean的生命周期进行操作:

  1. Java配置方式:使用@Bean的initMethod和destroyMethod(相当于xml配置的init-method和destroy-method)
  2. 注解方式:利用JSR-250的@PostConstruct和@PreDestroy
  3. 实现接口:分别实现接口InitializingBean和DisposableBean

代码:

//1.	Java配置方式:使用@Bean的initMethod和destroyMethod(相当于xml配置的init-method和destroy-method)

public class BeanWayService {


    public void init(){
        System.out.println("BeanWayService 初始化");
    }

    public void destroy(){
        System.out.println("BeanWayService 销毁");
    }
}

//注解方式:利用JSR-250的@PostConstruct和@PreDestroy
public class Jsr250WayService {

    @PostConstruct
    public void init(){
        System.out.println("Jsr250WayService method init");
    }


    @PreDestroy
    public void destroy(){
        System.out.println("Jsr250WayService method destroy");
    }
}

//	实现接口:分别实现接口InitializingBean和DisposableBean
public class InitBean implements InitializingBean, DisposableBean {
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println(   "InitBean 初始化完成" );
    }

    @Override
    public void destroy() throws Exception {
        System.out.println("InitBean 对象被销毁");
    }
}

测试类

4.	@Configuration
public class BeanConfig {

    @Bean
    public InitBean initBean(){
        return  new InitBean();
    }


    @Bean(initMethod = "init",destroyMethod = "destroy")
    public BeanWayService beanWayService(){
        return new BeanWayService();
    }
    @Bean
    public  Jsr250WayService jsr250WayService(){
        return new Jsr250WayService();
    }

    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(BeanConfig.class);
        context.getBean(InitBean.class);
        context.getBean(BeanWayService.class);
        context.getBean(Jsr250WayService.class);
        context.close();
    }
}

通过执行main方法可以查看日志打印的初始化和销毁的打印信息.

相关标签: Java