Spring日常笔记记录06--自动注入byName和byType

引用类型的自动注入:spring框架根据某些规则可以给引用类型赋值,不用在给引用类型赋值
使用规则常用的是byName,byType
1.byName(按名称注入):java类中引用类型的属性名和spring容器中(配置文件)<bean>的id名称一样
且数据类型是一致的,这样的容器中的bean,spring能够赋值给引用类型。
语法:
<bean id="xx" class="yyy" autowire = "byName">
简单类型属性赋值
</bean>
    <!--byName-->
    <bean id="myStudent" class="com.example.ba04.Student" autowire="byName">
        <property name="name" value="李四"/><!--setName("李四")-->
        <property name="age" value="22"/><!--setAge(20)-->
        <!--引用类型-->
        <!--<property name="school" ref="mySchool"/>-->
    </bean>

    <!--声明School对象-->
    <bean id="school" class="com.example.ba04.School">  <!--id名称与对象属性名相同-->
        <property name="name" value="黑皮大学"/>
        <property name="address" value="广州市"/>
    </bean>



2.byType(按类型注入):java类中引用类型的数据类型和spring容器中(配置文件)<bean>的class属性
是同源关系的,这样的bean能够赋值给引用类型
同源就是一类的意思:
1.java类中引用类型的数据类型和bean的class的值是一样的。
2.java类中引用类型的数据结构和bean的class的值父子类关系的。
3.java类中引用类型的数据结构和bean的class的值接口和实现类关系的。
语法:
<bean id="xx" class="yyy" autowire = "byType">
简单类型属性赋值
</bean>
1.java类中引用类型的数据类型和bean的class的值是一样的。
<bean id="myStudent" class="com.example.ba05.Student" autowire="byType">
        <property name="name" value="张三"/><!--setName("李四")-->
        <property name="age" value="21"/><!--setAge(20)-->
        <!--引用类型-->
        <!--<property name="school" ref="mySchool"/>-->
    </bean>

    <!--声明School对象-->
    <bean id="mySchool" class="com.example.ba05.School">
        <property name="name" value="白皮大学"/>
        <property name="address" value="广州市"/>
    </bean>


2.java类中引用类型的数据结构和bean的class的值父子类关系的。
<bean id="myStudent" class="com.example.ba05.Student" autowire="byType">
        <property name="name" value="张三"/><!--setName("李四")-->
        <property name="age" value="21"/><!--setAge(20)-->
        <!--引用类型-->
        <!--<property name="school" ref="mySchool"/>-->
    </bean>
    
    <!--声明School的子类-->
    <bean id="primaryschool" class="com.example.ba05.PrimarySchool">
        <property name="name" value="北京小学"/>
        <property name="address" value="北京的大兴区"/>
    </bean>

注意:在byType中,在xml配置文件中声明bean只能有一个符合条件的,
多余一个是错误的

posted @ 2021-07-12 15:55  Brack_Pearl  阅读(273)  评论(0编辑  收藏  举报