spring-Ioc(二)学习笔记

属性注入方式

  • 设值注入:也就是set注入,通过setter方法注入
    • java Bean
    private ITestDao dao;
    public void setDao(ITestDao dao){
     this.dao = dao
    }
  • xml文件
    <bean id="..." class="...">
        <property name="dao">
            <ref bean="....">
        </property>
    </bean>
  • 构造注入:
    • 直接量:String,8种值类型都是用value标签赋值,用type属性来指定数据的类型
    • 当构造方法重载时,因参数个和参数类型不能区分时,引入 index属性来指明参数的位置

P命名空间注入

  • 引入p的schema文件
    <!-- 直接量(基本数据类型,字符串)属性的赋值方式-->
<bean id="testBiz" class="cn.bdqn.spring.loc.service.impl.TestBiz"p:age="23"  p:name="jack"></bean>

<!--引用Bean的赋值方式-->
<bean id ="testDao" class="cn.bdqn.spring.loc.dao.NewDao"></bean>
<bean id ="testBiz" class="cn.bdqn.spring.loc.service.impl.TestBiz" p:dao-ref="testDao"></bean>

当bean的属性中存在集合时,如:list, set ,map注入方式

<bean id="moreComplexObject" class="example.ComplexObject">
    <!--当属性的返回结果是类是properties文件时-->
    <property name="adminEmails">
        <props>
            <prop key="administrator">administrator@example.org</prop>
             <prop key="support">support@example.org</prop>
             <prop key="development" > development@example.org</prop>
        </props>
      </property>
    <!--当属性的返回结果是list集合时-->
    <property name="someList">
        <list>
            <value>a list element followed by a reference</value>  <!--直接量赋值方式-->
            <ref bean="myDataSource">    <!--java Bean的赋值方式-->
        </list>
    </property>


    <!--当属性的返回结果为map时-->
    <property name="someMap">
        <map>
            <entry key="an entry" value="just some string"/>
            <entry key="a ref" value-ref="myDataSoruce"/>
         </map>
    </property>
    <!--当属性的返回结果为set时-->
    <property name="someSet">
        <set>
            <value>just some string<value>
            <ref bean="myDataSource"/>
        </set>
    </property>
</bean>

给元素赋值null 或者“”

<!--把属性设置为null值-->
<bean class="ExampleBean">
    <property name="email">
        <null/>
    </property>
</bean>
<!--设置为空字符串-->
<bean class="ExampleBean">
    <property name="email" value="">
</bean>
  • spring内部Bean的注入,相当于随用随new,外部的其它Bean不能使用

自动装配

  • 按类型匹配
  • 设置全局自动装配的类型
  • Spring提供的4种自动装配类型
取值说明
no 默认值,Spring默认不进行自动装配,必须显式指定依赖对象</td
byName 根据属性我自动装配,Spring自动查找与属性名相同的id,如果找到,则自动注入,否则什么也不做</td
byType根据的类型自动化装配,Spring自动查找与属性类型相同的Bean,如果刚好找到唯一的那个,则自动注入。如果找到多个与属性类型相同的Bean,则抛出异常,如果没有找到,就什么也不做
constructor 和byType类似,不过它针对构造方法,如果Spring找到一个Bean和构造方法的参数类型相匹配,则通过构造注入该依赖对象,如果找不到,交抛出异常




原文地址:https://www.cnblogs.com/baiyifengyun/p/13776769.html