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()方法。

  • 相关阅读:
    go语言的运行时支持到底是多线程还是单线程
    丑数
    把数组排成最小数
    连续子数组的最大和
    最小的k个数
    数组中出现次数超过一半的数字
    字符串的排序
    二叉搜索树与双向链表
    复杂链表的赋值
    二叉树中和为某一值的路径
  • 原文地址:https://www.cnblogs.com/coderising/p/5813910.html
Copyright © 2011-2022 走看看