• spring bean的生命周期


    Spring框架中,一旦把一个Bean纳入Spring IOC容器之中,这个Bean的生命周期就会交由容器进行管理,一般担当管理角色的是BeanFactory或者ApplicationContext:

    1、容器寻找bean的定义并实例化

    2、使用依赖注入,Spring按照Bean定义信息配置Bean所有属性

    3、如果这个Bean已经实现了BeanNameAware接口,会调用它实现的setBeanName(String)方法,此处传递的就是Spring配置文件中Bean的id值

    4、如果这个Bean已经实现了BeanFactoryAware接口,会调用它实现的setBeanFactory(BeanFactory)传递的是Spring工厂自身(可以用这个方式来获取其它Bean,只需在Spring配置文件中配置一个普通的Bean就可以);

    5、如果这个Bean关联了BeanPostProcessor接口,将会调用postProcessBeforeInitialization(Object obj, String s)方法

    6、如果Bean类已实现InitializingBean接口,则执行他的afterProPertiesSet()方法

    7、如果这个Bean在Spring配置文件中配置了init-method属性会自动调用其配置的初始化方法

    8、如果这个Bean关联了BeanPostProcessor接口,将会调用postProcessAfterInitialization(Object obj, String s)方法、;
    注:以上工作完成以后就可以应用这个Bean了,那这个Bean是一个Singleton的,所以一般情况下我们调用同一个id的Bean会是在内容地址相同的实例,当然在Spring配置文件中也可以配置非Singleton。

    9、当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean这个接口,会调用那个其实现的destroy()方法;

    10、最后,如果这个Bean的Spring配置中配置了destroy-method属性,会自动调用其配置的销毁方法。

    BeanPostProcessor接口:

    spring容器完成Bean的实例化、配置和其他的初始化前后添加一些自己的逻辑处理,我们可以定义一个或者多个BeanPostProcessor接口的实现,然后注册到容器中。

    InitializingBean接口:

    位于spring beans中,它只提供一个方法afterPropertiesSet(),当你实现了该方法后,spring就会对你提供框架级的支持:当你通过sring容器生产出实现了该接口的类的实例后,它就会调用afterPropertiesSet方法,通过这个方法,你可以检查你的bean是否正确地被初始化了.(也可以用init-method方法.这两种方式可以同时使用,调用的顺序为先InitializingBean 后init-method调用)

    群交流(262200309)
  • 相关阅读:
    JNDI
    在Tomcat上发布JNDI资源
    使用数据库连接池配置数据源
    JDBC连接数据库
    数据库中的一些概念
    线程池和数据库连接池
    springmvc学习指南 之---第25篇 Spring Bean有三种配置方式
    springmvc学习指南 之---第24篇 国际化问题
    深入刨析tomcat 之---第23篇 聊一下web容器的filter配置和defaultservet
    又一本springmvc学习指南 之---第22篇 springmvc 加载.xml文件的bean标签的过程
  • 原文地址:https://www.cnblogs.com/webster1/p/8351663.html
Copyright © 2020-2023  润新知