美文网首页sshSpringJavaweb
Spring生命周期管理

Spring生命周期管理

作者: fisherhuang | 来源:发表于2018-07-31 18:02 被阅读79次

    一、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生命周期管理

        本文链接:https://www.haomeiwen.com/subject/ordhvftx.html