zoukankan      html  css  js  c++  java
  • Spring bean的作用域和生命周期

    bean的作用域

    1.singleton,prototype, web环境下:request,session,gloab session

    2.通过scope="" 来进行配置

    3.对于singleton  spring容器只会创建一个共享实例,prototype则会创建不同的实例

    bean的生命周期(bean自身的方法,bean级生命周期接口方法,容器级生命周期接口方法)

    分为BeanFactory的生命周期和ApplicationContext的生命周期

    1、对于BeanFactory

       1、当通过getBean调用某一个bean的时候,首先看容器是否注册(不是bean实现接口,属于容器级生命周期方法)了InstantiationAwareBeanPostProcessor接口,如果注册了,将会调用postProcessBeforeInstantiation()方法。

       2、然后实例化bean

       3、调用InstantiationAwareBeanPostProcessor接口的postProcessAfterInstantiation()方法

       4、设置属性,调用setter()

       5、调用BeanNameAware的setBeanName()方法

       6、调用BeanFactoryAware中的setBeanFactory()方法

       7、调用InstantiationAwareBeanPostProcessor接口的postProcessBeforeInitialization()方法

       8、 如果容器注册了BeanPostProcessor接口,调用该接口的postProcessBeforeInitialization()方法

       9、调用InitializingBean接口的afterPropertiesSet()方法

       10、调用init-method属性配置的方法

       11、调用InstantiationAwareBeanPostProcessor接口的postProcessAfterInitialization()方法

       12、调用BeanPostProcessor接口的postProcessAfterInitialization()方法

       13、如果bean是单例的则把bean实例存入缓冲池由Spring容器继续关系bean的生命周期,否则交由该bean的调用则管理

       14、调用DisposableBean接口的方法

       15、通过destory-method属性配置的方法

    要往ioc容器手动添加BeanPostProcessor的实现类  (ConfigurableBeanFactory)bf.addBeanPostProcessor(new MyBeanPostProcessor());

    ApplicationContext中bean的生命周期和BeanFactoty的基本相同,在BeanFactoryAware接口后增加了一个 ApplicationContextAware接口的setApplicationContext()方法。

  • 相关阅读:
    TestNG:org.openqa.selenium.firefox.NotConnectedException: Unable to connect
    Python 程序员经常犯的 10 个错误
    python爬虫框架scrapy实例详解
    使用python进行汉语分词
    Python监控日志程序
    用Python读取excel中的数据
    Python 文件处理
    10 款最好的 Python IDE
    自动化测试代码架构浅谈
    Robotium如何向下拖动屏幕
  • 原文地址:https://www.cnblogs.com/coderising/p/5813910.html
Copyright © 2011-2022 走看看