• Spring Bean的生命周期和作用域


    一、Bean的作用域
    在Bean容器启动会读取bean的xml配置文件,然后将xml中每个bean元素分别转换成BeanDefinition对象。在BeanDefinition对象中有scope 属性,就是它控制着bean的作用域。
    Spring框架支持5种作用域,有三种作用域是当开发者使用基于web的ApplicationContext的时候才生效的。下面就是Spring直接支持的作用域了,当然开发者也可以自己定制作用域

    Spring作用域:

      1、单例Singleton:在整个应用中,只创建bean的一个实例,在IOC容器中共享,容器创建的时候就实例化了这个bean

      2、原型Prototype:每次注入或者通过Spring应用上下文获取的时候,都会创建一个新的bean实例,相当于每次都new bean(),容器创建的

    时候没有实例化了bean,而是请求获取的时候才会创建对象

      3、会话Session:只是在Web应用中,为每个http session创建一个bean实例

      4、请求Rquest:只是在Web应用中,为每个http请求创建一个bean实例,这个bean实例只在当前request请求内有效,请求结束的时候,这个

    bean实例被销毁

      5、全局会话GlobalSession:只是在Web应用中使用,仅在使用portlet context的时候有效

    二.Bean的生命周期

    流程:

      1、Spring对bean进行实例化

      2、Spring将值和bean的引用注入到bean对应的属性中

      3、如果bean实现了BeanNameAware接口, Spring将bean的ID传递给setBeanName()

      4、如果bean实现了BeanFactoryAware接口, Spring将调用setBeanFactory(),将BeanFactory容器实例传入

      5、如果bean实现了ApplicationContextAware接口, Spring将调用setApplicationContext(),将bean所在的应用上下文的引用传入

    进来

      6、如果bean实现了BeanPostProcessor接口, Spring将调用它们的postProcessBeforeInitialization()

      7、如果bean实现了InitializingBean接口, Spring将调用它们的afterPropertiesSet()。类似地,如果bean使用init-method声

    明了初始化方法,该方法也会被调用

      8、如果bean实现了BeanPostProcessor接口, Spring将调用它们的postProcessAfterInitialization()

      9、此时,bean已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,直到该应用上下文被销毁

      10、如果bean实现了DisposableBean接口, Spring将调用它的destroy()接口方法。同样,如果bean使用destroy-method声明了

    销毁方法,该方法也会被调用

  • 相关阅读:
    Regex一些基本的方法
    正则表达式中特殊字符的含义
    demo_36 收藏与点赞功能实现_02
    demo_36 收藏与点赞功能实现_01
    demo_35 关注作者_02 关注作者功能实现
    demo_35 关注作者_01 云函数实现
    demo_34 评论内容实现_6 实现对子回复的回复
    demo_34 评论内容实现_5 对回复的回复的逻辑实现并渲染到页面
    demo_34 评论内容实现_4 实现对评论的评论
    demo_34 评论内容实现_3 从数据库加载评论
  • 原文地址:https://www.cnblogs.com/Chencheno/p/11753036.html
Copyright © 2020-2023  润新知