初生牛犊之spring(三)

用ref属性指定依赖

    1.用local属性指定

如:<property name="date">

            <ref local="date"/>  <!--local的属性值必须与被参考引用的Bean的id属性一致 -->

      </property>

      <bean id="date" class="java.util.Date"/>

   2.用Bean属性指定

: <property name="date">

            <ref bean="date"/>  <!--bean的属性值必须与被参考引用的Bean的id属性一致 ,但允许指向的Bean可以在一个Xml中,也可以不在同一个Xml中-->

      </property>

      <bean id="date" class="java.util.Date"/>

    3.用parent属性指定(略)

 

Bean自动装配的5种模式

    使用Bean元素的autowire属性来指定Bean定义的自动装配,共有5种模式:byName、byType、constructor、autodetect和no

no:意思是不支持自动装配,必须用户<property name="beanA" ref="bean_a"/>明确指定依赖。

byName:通过设置Bean标签的属性autowire="byName",意思是根据名字进行自动 装配,只能用于setter注入。比如我们有方法setBeanA(MyBeanA myBeanA),Spring容器将查找配置文件里标志为beanA的Bean并注入,如果找不到,将什么也不注入。

Xml代码  收藏代码
  1. <bean id="beanA" class="com.chou.bean.MyBeanA"/>  
  2. <bean id="bean_b" class="com.chou.bean.MyBeanB" autowire="byName"/>  


配置里没有了<property>了,如果一个bean有很多setter注入,通过“byName”方式能减少很多<property>配置。需要注意的是,在根据名字注入时,将把当前Bean自己排除在外:比如“hello”Bean类定义了“setHello”方法,则hello是不能注入到“setHello”的。

byType:通过设置Bean定义属性autowire="byType",意思是指根据类型注入,用 于setter注入,比如如果指定自动装配方式为“byType”,而setBeanA(MyBeanA myBeanA)方法需要注入MyBeanA类型数据,则Spring容器将查找MyBeanA类型的Bean,(将把当前Bean自己排除在外)如果找到一个则注入该Bean,如果找不到将什么也不注入。

Xml代码  收藏代码
  1. <bean id="beana" class="com.chou.bean.MyBeanA" autowire-candidate="false"/>  
  2. <bean id="beanA" class="com.chou.bean.MyBeanA" primary="true"/>  
  3. <bean id="bean_b" class="com.chou.bean.MyBeanB" autowire="byType"/>  


根据类型找到多个 Bean时,对于集合类型(如List、Set)将注入所有匹配的候选者,而对于其他类型遇到这种情况可能需要使用“autowire- candidate”属性为false来把指定Bean从自动装配候选者中移除,或使用“primary”属性为true来指定某个Bean为首选 Bean

constructor:通过设置Bean定义属性autowire="constructor",功能和“byType”功能一样,根据类型注入构造器参数,只是用于构造器注入方式。

autodetect:自动检测是使用“constructor”还是“byType”自动装配方式,已不推荐使用。如果Bean有空构造器那么将采用“byType”自动装配方式,否则使用“constructor”自动装配方式。此处要把3.0的xsd替换为2.5的xsd,否则会报错。

 

Bean依赖检查的4种模式

     依赖检查能够分别对每一个Bean应用或取消应用。使用Bean元素的dependency-check属性来指定Bean定义的依赖检查共有4种模式:simple、object、all、none。

     1.使用simple模式:指的是对基本类型、字符串和集合进行依赖检查。

如:<bean id="beanA" class="com.chou.bean.MyBeanA" dependency-check="simple"/> 

     2.使用object模式:对依赖的对象进行依赖检查。

     3.使用all模式:对全部属性进行检查。

     4.使用none模式:不进行依赖检查

 一般情况下,依赖检查和自动装配结合使用

 

posted @ 2013-04-02 18:38  深海巨坑  阅读(153)  评论(0编辑  收藏  举报