SpringBean生命周期之初始化实例化

一、Bean生命周期相关的两个注解

@PreDestroy:该注解作用与方法,要求方法无参且返回值为void,Bean对象销毁之前会调用。

ps:如果对象作用域是原型(protype)则不会被调用,进程被强制kill或意外终止也不会被调用。JVM关闭,会触发hook(钩子),让context关闭,context关闭前自动调用该注解的方法。

@PostConstruct:该注解作用于方法,要求方法无参且返回值为void,该方法会在依赖注入后被调用,作用为自定义初始化操作。

通过@Bean的属性在Bean初始化和销毁前执行自定义操作。

显示配置Bean时,可以通过添加@Bean的属性initMethod和destroyMethod来指定对应的方法,效果和@PostConstruct和@PreDestroy效果一样。

二、初始化实例化:

1.加载并后处理Bean定义:实现BFPP(BeanFactoryPostProcessor)接口。一般用于修改作用域和读取属性的值。处理Bean定义,确保所有对象都可以在类型和bean id下被索引。

2.实例化:查找Bean依赖,实例化Bean,通过三种注入方式注入,三种注入顺序依次为:构造注入>字段注入>Setter注入。

3.初始化:通过BPP(BeanPostProcessor)接口,可在Bean对象初始化前后添加操作。

BPP中重写两个方法后,两个方法会在每个Bean的初始化器之前和之后都调用。

至此对象初始化实例化完成。

你可能感兴趣的:(java,spring)