Spring Bean的初始化过程
程序员文章站
2022-05-21 23:05:16
...
1.创建容器。
2.反射调用构造器创建实体(此时该实体还不是bean)。
3.Spring会识别被配置成bean的信息,扫描注解的包。把实体对应的类信息封闭成一个BeanDefinition对象,会把这些BeanDefinition对象放入到一个Map中。会根据配置判断是否是单例,如果是单例,会放到单例池。再进行验证,最后进入依赖注入。
4.set方法。
5.(如果实现了BeanNameAware接口),就会调用setBeanName方法。
6.(如果实现了BeanFactoryAware接口),就会调用setBeanFactory方法。
7.(如果有后置处理器),就会执行postProcessBeforeInitialization方法。
8.(如果实现了InitializingBean接口),就会调用 afterPropertiesSet 方法。
9.(如果配置了init-method属性或者标记了@PostConscutor注解),就会执行其对应的方法。
10.(如果有后置处理器),执行后置处理器的postProcessAfterInitialization方法。
11.使用Bean。
12.(如果配置了destroy-method属性或者标记了@PreDestroy注解),就会执行其对应的方法。
13.(如果实现了Destroyable接口),就会调用destroy方法。(和12你死我活)