Spring注解驱动开发——生命周期 @Bean 指定初始化方法和销毁方法

Bean的生命周期,
     bean创建-----初始化------销毁的过程
     容器管理bean的生命周期;
     我们可以自定义初始化和销毁方法;容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法

单实例:在容器启动的时候创建对象
多实例:在每次获取的时候创建对象

 初始化:
 对象创建完成,并赋值好,调用这个初始化方法。。。。。。

 销毁:
 单实例:容器关闭的时候
 多实例:容器不是管理这个bean,容器不会调用销毁方法;

 一 、指定初始化和销毁方法;指定init-method和destory-method

 car  实体类

复制代码
package com.mongoubiubiu.bean;

public class Car {
    
    
    
    public Car(){
        System.out.println("car constructor.....");
    }
    
    
    public void init(){
        System.out.println("car init.......");
    }
    
    public void destory(){
        System.out.println("car destory.......");
    }

}
复制代码

配置类 用@Bean 注解将car 注入到容器中

复制代码
package com.mongoubiubiu.conf;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;

import com.mongoubiubiu.bean.Car;
import com.mongoubiubiu.bean.Person;

/**
 * Bean的生命周期,
 *         bean创建-----初始化------销毁的过程
 * 容器管理bean的生命周期;
 * 我们可以自定义初始化和销毁方法;容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法
 * 
 * 单实例:在容器启动的时候创建对象
 * 多实例:在每次获取的时候创建对象
 * 
 * 初始化:
 *        对象创建完成,并赋值好,调用这个初始化方法。。。。。。
 *        
 * 销毁:
 *        单实例:容器关闭的时候
 *        多实例:容器不是管理这个bean,容器不会调用销毁方法;
 * 
 * 
 * 1)、指定初始化和销毁方法;
 *      指定init-method和destory-method
 * 2)、通过让Bean实现InitializingBean(定义初始化逻辑)
 *                   DisposableBean(定义销毁逻辑)
 * 3) 、可以使用JSR250;
 *          @PostConstruct: 在bean创建完成并且属性赋值完成;来执行初始化方法
 *          @PreDestroy:在容器销毁bean之前通知我们进行清理工作
 */
@Configuration
public class MainConfigOfLifeCycle {

    //给容器中注册一个bean; 类型为返回值的类型 id默认是用方法名做为id
    @Bean(initMethod="init",destroyMethod="destory")
    public Car car(){
        return new Car();
    }
    
    
}
复制代码

 

 二、测试

测试类

复制代码
package com.mongougbiubiu.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Scope;

import com.mongoubiubiu.conf.MainConfigOfLifeCycle;

public class IOCTest_LifeCycle {
    
    
    @Test
    public void Test01(){
        //创建ioc 容器
        AnnotationConfigApplicationContext applica=    new AnnotationConfigApplicationContext(MainConfigOfLifeCycle.class);
        //applica.getBean("car");
        //applica.close();
    } 

}
复制代码

单实例bean测试

不加@Scope 默认是单实例的 ,单实例在容器启动的时候创建对象

测试类

 

 

 

 

 

 输出

 

 

 销毁对象: ioc 容器关闭的时候 对象就销毁了

 

 

 输出

 

 

多实例bean测试

 

 

 测试

 

 

 

 

 

 

 并没有执行创建方法和初始化方法,因为多实例是获取bean的时候才创建bean 对象。

再次测试

 

 

 

 

 

 容器不会管理bean 关闭容器不会调用销毁方法。

 

本文作者:KwFruit

本文链接:https://www.cnblogs.com/mangoubiubiu/p/15068323.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   KwFruit  阅读(59)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起