spring学习日志之二Bean的配置的细节和解析

1,Spring容器原理概述

Bean配置信息定义了Bean的实现以及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载、实例化Bean,并建立Bean和Bean的依赖关系,最后将这些准备就绪的Bean放到Bean的缓存池中,以供外层的应用程序调用。

2 ,Spring的依赖注入

1)       属性注入,例子:

<propertyname=”attributeName”><value>value</value></property>

2)       构造函数注入,例子:

<constructor-argtype=”double”><value>value</value></ constructor>

3)       工厂方法注入,例子:

<beanid=”carFactory” class=”mvn.CarFactory”>

<beanid=”car2” factory-bean=”carFactory”factory-method=”createHongQiCar”>

3 ,Bean的引用

<ref>元素可以通过以下三个属性引用容器中其他的Bean。

1)       bean:通过该属性可以引用同一容器或者父容器的Bean,这是最常见的形式

2)       local:通过该属性只能引用统一配置文件中的Bean,它可以利用XML解析器自动检验引用的合法性,以便在开发编写配置时就能够及时发现并纠正配置的错误。

3)       parent:引用父容器中的Bean,如<ref parent=”car”>的配置说明car的Bean是父容器的Bean

4 ,Bean的作用域

类别

说明

singleton

在Spring 的IOC容器中仅存一个Bean实例,Bean以单实例的方式存在

prototype

每次从容器中调用调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行new XXBean()的操作

request

每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境

session

同一个HTTP Session共享一个Bean,不同HTTP Session使用不同的Bean,该作用域仅适用于WebApplicationContext环境

globalSession

同一个全局Session共享一个Bean,一般用于Portlet应用环境,该作用域仅适用于WebApplicationContext

 

5,Spring的一些小知识

1)       Spring配置文件不允许出现两个相同id的<bean>,但却可以出现两个相同name的<bean>,如果多个name相同的<bean>通过getBean获取Bean时,将返回后面声明的那个Bean,原因是后面声明的Bean覆盖了前面的同名Bean。

2)       如果一个Bean的id和name都未指定,Spring将自动将全限定类名作为Bean的名称。

3)       当两个Bean存在循环依赖的问题时,可以通过修改Bean的代码,将构造函数注入的方式调整为属性注入的方式就行了。

4)       Spring的XML属性注入时,设置null值一定要用<null/>标签。

5)       在Spring环境下,对于所有的Dao类都可以采用单实例模式,因为Spring利用AOP和LocalThread的功能,对非线程安全的变量进行了特殊的处理,使这些非线程安全的类变成了线程安全的类。

6)       当一个request作用域的car Bean被一个singleton作用域的boss Bean引用时,为了让boss能够从适当作用域中获取的car Bean的引用,需要使用Spring AOP的语法为car Bean配置一个代理类。

7)       Java语言智能对接口提供自动代理,如果需要对类进行动态代理,就需要使用CGLib为类生成动态代理的子类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值