该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-06-14
属性参考
如果在Bean定义文件中已经有一个定义的Bean实例,则可以直接让某个属性参考这个实例。 例如: =================== ApplicationContext.xml -------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <!--以有定义的bean--> 要参考至定义文件中已定义的Bean实例,是使用<ref/>标签,并使用 "name” 属性来指定定义文件要参考的Bean别名。 如果某个Bean的实例只被某个属性参考一次,之后在定义文件中不再被其他Bean的属性所参考,那么也可以直接在属性定义时使用<bean>标签,并且需指定其”class“属性即可: 例如:
Bean定义文件 ------------------------------- ......... <property name="date"> ......... --------------------------------
自动绑定
除了在Bean定义文件中直接指定字符串值,使用<ref/>直接指定参考至其他的Bean实例,或是使用<bean>标签并指定“class”属性来指定依赖对象外,Spring也支持隐式的自动绑定。
可以透过类型(byType)或名称(byName)将某个Bean的实例帮定至其他Bean对应的属性。 实例:
Bean定义文件 ---------------------------------------- ............
............ ---------------------------------------- 里面并没有指定date属性,而是透过自动帮定,在“autowire”属性上指定的“byType”,所以会根据bean的setDate()方法所接受的类型,来判断Bean定义文件中是否定义有类似的类型对象,并将之设个setDate(). 使用自动帮定时,如果“byType”无法完成帮定,则抛出org.springframework.beans.factory.Unsatisfied-DependencyException异常。
使用"byName" 来帮定,则会根据Bean定义时的“id”属性上指定的别名与Setter名称是否一致来进行自动帮定。 实例:
Bean定义文件 ---------------------------------------- ............ <bean id="date" class="java.util.Date"></bean> .............. ----------------------------------------- 如果使用"byName"无法完成自动帮定,则对应的Setter仅维持未帮定状态。
也可以在构造方法上进行自动帮定。 实例:
Bean定义文件 --------------------------------- .............. <bean id="date" class="java.util.Date"></bean> .............. --------------------------------- 由于"autowire"设定为"constructor",在建立依赖关系时,容器会试图比对Bean实例类型,及相关的构造方法上的参数类型,如果符合则选用构造方法来建立Bean的实例。 如果无法完成帮定则抛出:org.springframework.beans.factory.UnsatisfiedDependencyException异常。 还可以将"autowire"设定为"autodetect",一切交给Spring来判断有什么方式进行帮定。 当"autowire"被设定为"autodetect"时,Spring会先尝试构造方法(“constructor”)来处理依赖关系的建立,如果没有完成依赖关系建立,则再尝试使用如"byType"的方式来建立依赖关系。
依赖检查
在隐式自动绑定中,由于没办法从定义文件中,清楚地看到是否每个属性都完成设定,为了确保某些依赖关系确实建立,可以加入以来检查,在<bean>标签使用时设定“dependecy-check”, 可以有4种依赖检查方式:"simple","objects","all","none".
实例:
Bean定义文件 --------------------------------------- .......... <bean id="date" class="java.util.Date"></bean> .......... --------------------------------------- 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 1487 次