Spring Bean基本概念

  • Post author:
  • Post category:其他


参考书籍《Spring 3.x企业应用开发与实践》

  • Bean配置信息是Bean的元数据信息,由以下4个方面组成

    • Bean的实现类
    • Bean的属性信息,如数据库的连接数、用户名、密码
    • Bean的依赖关系,Spring根据依赖关系配置完成Bean之间的装配
    • Bean的行为配置,如生命周期范围及生命周期各过程的回调函数。
  • Spring通过一个配置文件描述Bean及Bean之间的依赖关系,利用Java反射功能实例化Bean并建立Bean之间的依赖关系。Spring的Ioc容器在完成这些底层工作的基础上,还提供了Bean实例缓存、生命周期管理、Bean实例代理、事件发布、资源装载等高级服务。

  • BeanFactory是Spring框架最核心的接口,它提供了高级Ioc的配置机制。
  • ApplicationContext建立在BeanFactory之上,面向开发者,一般称为Spring容器。

在IoC容器中装配Bean

图【Spring-property】

  • JavaBean属性名命名规范:变量前两个字母要么全小写,要么全大写。
  • Bean作用域:在Spring环境下,对于所有的Dao类都可以采用单例模式,因为Spring利用AOP和LocalThread的功能,对非线程安全的变量(或称状态量)进行了特殊的处理,使这些非线程安全的类变成了线程安全的类。
  • Web相关的作用域的Bean注入到singleton或prototype的Bean时存在作用域依赖的问题,此时通过Spring AOP创建动态代理,这个动态代理是Car类的子类,Spring给它添加一段逻辑,通过判断当前Boss位于哪个线程中,让Boss Bean引用到对应线程HTTP请求的car Bean。

    【图aop】
<bean id="car" class="com.baobaotao.scope.Car" scope="request" >
  <aop:scoped-proxy/>
</bean>

<bean id="boss" class="com.baobaotao.scope.Boss" p:car-ref="car" >
  <prototype name="car" ref="car"/>
</bean>

图【bean-scope】

<bean id="car" class="com.baobaotao.scope.Car" scope="singleton" />
<bean id="boss1" class="com.baobaotao.scope.Boss" p:car-ref="car" />
<bean id="boss2" class="com.baobaotao.scope.Boss" p:car-ref="car" />
<bean id="boss3" class="com.baobaotao.scope.Boss" p:car-ref="car" />

图【singleton】

<bean id="car" class="com.baobaotao.scope.Car" scope="prototype" />
<bean id="boss1" class="com.baobaotao.scope.Boss" p:car-ref="car" />
<bean id="boss2" class="com.baobaotao.scope.Boss" p:car-ref="car" />
<bean id="boss3" class="com.baobaotao.scope.Boss" p:car-ref="car" />

图【prototype】

  • 各种配置方式比较

    图【bean-diff】

    图【bean-compare】



版权声明:本文为qq_24145735原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。