SpringBoot的IOC模块注解及简单案例(二)

本文将会讲到SpringBoot的IOC模块下的注解进行总结,主要目的是为了方便之后查找注解和快速应用。

将会以:组件注册,生命周期,属性赋值,自动装配来进行区分。


二、生命周期

1、总结:自定义Bean的初始化和销毁方法
    1)、 指定init-method 和 destory-method

    2)、 通过让 Bean 实现 InitializingBean 接口,定义初始化逻辑
                                            DisposableBean 接口,定义销毁逻辑

    3)、可用 @PostConstruct,在 Bean 创建完成并且赋值完成后,执行该注解标注的方法
                     @PreDestroy,在容器销毁 Bean 之前,执行该注解标注的方法

    4.)、BeanPostProcessor ,在Bean 初始化前后进行一些处理工作
              postProcessBeforeInitialization: 在初始化之前工作
              postProcessAfterInitialization: 在初始化之后工作
 

创建:Bean 构造函数 ——> @PostConstruct ——> InitializingBean 接口 ——> bean 定义的 init-method 
              ——> postProcessBeforeInitialization ——> Bean 初始化完成 ——> postProcessAfterInitialization ——> 容器创建完成


销毁:@PreDestroy ——> DisposableBean 接口 ——> bean 定义的 destoryMethod ——> Bean销毁
 

2、示例:

    1)、init-method 和 destory-method

@Configuration
public class MainConfigOfLifeCycle {

        @Bean(initMethod="initTest", destroyMethod="detoryTest")
	public Car car() {
		return new Car();
	}
}
public class Car {
	
	public void initTest() {
		System.out.println(" .. init-method .. ");
	}
	
	public void detoryTest() {
		System.out.println(" .. destory-method .. ");
	}
}

 

    2)、InitializingBean 和 DisposableBean 接口

@Configuration
public class MainConfigOfLifeCycle {

	@Bean
	public Cat cat() {
		return new Cat();
	}
}
public class Cat implements InitializingBean, DisposableBean {

	
	//该Bean在销毁时,调用
	public void destroy() throws Exception {
		// TODO Auto-generated method stub
		
		System.out.println(" .. DisposableBean .. ");
	}

	//该Bean创建完成并且赋值完成后,调用
	public void afterPropertiesSet() throws Exception {
		// TODO Auto-generated method stub
		
		System.out.println(" .. InitializingBean .. ");
	}

}

 

    3)、@PostConstruct 和 @PreDestroy

@Configuration
public class MainConfigOfLifeCycle {

	@Bean
	public Dog dog() {
		return new Dog();
	}
}
public class Dog {

	//对象创建并赋值之后调用
	@PostConstruct
	public void init() {
		System.out.println(" .. @PostConstruct .. ");
	}
	
	//容器移除对象之前
	@PreDestroy
	public void detory() {
		System.out.println(" .. @PreDestroy .. ");
	}
	
}

 

    4)、BeanPostProcessor 接口

@Configuration
public class MainConfigOfLifeCycle {

	@Bean
	public MyBeanPostProcessor myBeanPostProcessor() {
		return new MyBeanPostProcessor();
	}
	
}
public class MyBeanPostProcessor implements BeanPostProcessor {

	@Override
	public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
		// TODO Auto-generated method stub
		
		System.out.println(" .. postProcessBeforeInitialization .. ");
		
		return bean;
	}

	@Override
	public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
		// TODO Auto-generated method stub
		
		System.out.println(" .. postProcessAfterInitialization .. ");
		
		return bean;
	}

}

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值