Spring生命周期管理

一、Bean的解析加载

IOC容器启动

IOC容器通过applicationContext.refresh()加载注册Bean到IOC容器,默认的IOC容器为DefaultListableBeanFactory:

常用的加载方式如下。

ClassPathXmlApplicationContext:从ClassPath路径中加载 XML 配置的上下文。

FileSystemXmlApplicationContext:从文件系统中加载XML 配置的上下文。

XmlWebApplicationContext: Web开发中从 XML 中记载 Web 上下文,区别 于上面 两个之处在于, 此上下文是基于 ServletContext的。

AnnotationConfigWebApplicationContext:从注解类中加载 Web 上下文。

ClassPathXmlApplicationContext 加载流程:

Bean 的解析

Bean解析完成之后就会注册到IOC容器

二、Bean的生命周期管理

在Spring容器管理了Bean的生命周期,在Bean的生命周期内,我们可以通过配置或实现接口完成Bean在生命周期内的职责比如:@Autowired自动注入,Druid数据库连接池的初始化,连接池的关闭等。

下面主要介绍Spring为Bean初始化、销毁提供的扩展方法

Bean的初始化:

1.实现BeanNameAware接口的 Bean 能够感知到 自己在BeanFactory 中注册的名称。

2.实现BeanFactoryAware的 Bean 能够感知到 自己所属的 BeanFactory

3.直接在 Bean 的构造方法里做初始化工作 。

4.使用@PostConstruct 注解,指明在 Bean 构造器方法执行后执行的方法。

5.Bean 实现 InitializingBean接口,在 afterPropertiesSet 中做初始化工作。

6.在 XML中使用init-method指定Bean 构造完成后调用的方法。

7.实现BeanPostProcessor接口,可以执行Bean初始化的处理逻辑。可用于自定义注解实现

例如:

Spring内置的BeanPostProcessor实现:

CommonAnnotationBeanPostProcessor解析@Resource注解

RequiredAnnotationBeanPostProcessor解析@Required注解

AutowiredAnnotationBeanPostProcessor解析@Autowired注解

ApplicationContextAwareProcessor用于为注入ApplicationContext等容器对象

Bean的销毁

1.使用@PreDestroy注解,指明容器关闭后执行的方法

2.实现Disposable接口,在destory方法做销毁工作

3.在Xml配置中指定destory-method方法


Bean的生命周期

你可能感兴趣的:(Spring生命周期管理)