Bean的作用域


  • Spring 2.5之前的Bean 的作用域只有两种
    • Springleton:单例Bean
    • Prototype : 原型Bean
  • Spring 2.5 之后Bean的作用域有一下五种
    • 作用域 描述
      singleton (单例) 使用该属性定义Bean时,IOC容器仅创建一个Bean实例,IOC容器每次返回的是同一个Bean实例。在整个spring ioc 容器中只能创建一个Bean实例
      prototype  (原型) 使用该属性定义Bean时,IOC容器可以创建多个Bean实例,每次返回的都是一个新的实例。 每次调用都会创建一个bean 
      request  (请求) 该属性仅对HTTP请求产生作用,使用该属性定义Bean时,每次HTTP请求都会创建一个新的Bean,适用于WebApplicationContext环境。
      session  (会话) 该属性仅用于HTTP Session,同一个Session共享一个Bean实例。不同Session使用不同的实例。
       global-session  (全局) 该属性仅用于HTTP Session,同session作用域不同的是,所有的Session共享一个Bean实例。
  • 如何使用
    • 通过bean 标签的scope 属性来定义bean的作用
    •  

       

  • Bean的生命周期
    • 指定Bean的初始化方法 和销毁方法 (bean容器的生命周期是由Spring 容器来管理的  也可以自己手动管理)
      • 可以Spring中指定Bean的初始化方法 ,当JavaBean实例化完成后调用该方法对javaBean做初始化操作 ( init-method="init")
      • 同时也可以在Spring中指定Bean的销毁方法  ,Spring销毁该javaBBan实例之前进行一些销毁前的资源释放操作(destroy-method="close")
    •  

       

  • bean 的自动装载
    • 普通属性的自动装配
      •  

         

      •  

         

    • 集合的自动装配
      •  

         

      •  

         

      •  

         

  • bean 延时实例化
    • ApplicationContext 实现的默认行为就是在启动时讲所有单例 bean 提前进行实例化
    • 提前实例化意味着作为Bean 的实例化工作作为容器初始过程的一部分,ApplicationContext容器会创建并配置所有的单例Bean
    • 通常情况下这是件好事 ,因为这样在配置中任何错误就会即刻被发现 (否则的话可能花几个小时甚至几天)
    • 如果开发者不想让一个单例Bean在AppcationContxt 初始化时被提前实例化 那么可以讲Bean设置为延迟实例化
  • ki

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM