Spring Bean初始化的几种方法以及执行顺序

执行顺序,@PostConstruct 构造后置执行,@InitializingBean#afterPropertiesSet 属性填充后执行,@Bean(initMethod=”xxx”) 初始化功能

Spring Bean实例化的几种特殊方式

ServiceLoader 利用JDK里面的反向控制,ServiceLoader 利用JDK里面的反向控制,ServiceLoaderFactoryBean,AutowireCapableBeanFactory#createBean

Spring Bean初始化的几种常规方式

通过静态工厂实例化,通过实例工厂实例化,实例工厂实例化,通过构造方法实例化

Spring中将BeanDefinition注册到IOC容器中

@Bean,@Component,@Import 注解,命名:,非命名,BeanDefinitionReaderUtils#registerWithGeneratedName

Spring中构建BeanDefinition的两种方法

BeanDefinitionBuilder,GenericBeanDefinition,BeanDefinitionBuilder,GenericBeanDefinition

Spring中的BeanDefinition

: 返回当前 bean definition 定义的类名,: 设置父 definition 的名称,: 返回当前 bean definition 的父 definition 的名字,: 设置工厂的方法名

Spring Bean懒加载与非懒加载

即被非懒加载的bean依赖时也会被初始化,那么当ApplicationContext提前实例化singleton bean时,而另一个非延迟初始化的singleton bean依赖于它,3,ApplicationContext实现的默认行为就是在启动时将所有singleton bean提前进行实例化

@PostConstruct,@Autowired和Constructor的先后顺序

@PostConstruct注解的方法将会在依赖注入完成后被自动调用,可以使用@PostConstruct注解一个方法来完成初始化,而偏偏这些初始化操作又依赖于依赖注入,如果想在生成对象时候完成某些初始化操作

Spring 常用扩展点接口

从名字上来看, 这个接口是 的后处理器, 通过它我们可以在 初始化前后做一些操作. 它提供了两个方法:,这个接口有一个方法: , 该方法在所有的属性都被赋值后调用. 属性被赋值是在初始化的时候做的, 与 结合来看, 方法将在 和 之间被调用.,就是 的后处理类, 我们可以在 初始化之后做一些操作. 它提供了个 方法, 这个方法被调用的时候, 所有的 已经被创建, 但是还没有被初始化. 也就是说, 通过它我们可以在初始化任何 之前, 做各种操作, 甚至读取并修改 (bean定义的元数据).,另外, 在 中可以通过 注解来指定在被 之后紧接着做一些初始化操作, 上面的 方法是在 之后被调用的.

springboot自定义注解 (BeanPostProcessor的应用案例)

使用BeanPostProcessor处理注解,使用@interface定义注解,自定义注解类,源码:https://github.com/mifunc/spring-processor

入门小站