zoukankan      html  css  js  c++  java
  • SpringXML方式配置bean的自动装配autowire

    Spring的自动装配,也就是定义bean的时候让spring自动帮你匹配到所需的bean,而不需要我们自己指定了。

    例如:

    User实体类里面有一个属性role

    1
    2
    3
    4
    5
    6
    7
    public class User {
        private int id;
        private String username;
        private String password;
        private Role role;
        /*****省略get and set****/
    }

    在我们的applicationConext.xml文件里,假如有两个role对象

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?xml version="1.0" encoding="UTF-8"?>
     
        <bean id="role" class="com.fz.entity.Role"></bean>
        <bean id="role1" class="com.fz.entity.Role"></bean>
        <bean name="user" class="com.fz.entity.User" scope="prototype">
            <property name="role" ref="role"></property>
        </bean>
    </beans>

    此时<property name="role" ref="role"></property>找到的就是第一个role对象,但是在bean上配置上了autowire之后,则可以不用写<property name="role" ref="role"></property>这个属性了。则是如下的写法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8"?>
     
        <bean id="role1" class="com.fz.entity.Role"></bean>
        <bean id="role2" class="com.fz.entity.Role"></bean>
        <bean name="user" class="com.fz.entity.User" scope="prototype" autowire="default">       
        </bean>
    </beans>


    autowire的意思就是spring帮你匹配容器里的bean,而匹配规则有如下几种


    default:如果在bean上指定了default,则它会去beans标签上去找default-autowire属性

    no:不匹配,但是bean必须定义ref元素

    byName:根据名字匹配(如果容器里没有该name的bean,则该属性为null)

    byType:根据类型匹配(如果同时找多个相同类型的bean,则报错)

    constructor:根据构造器匹配(很少使用)


    总结:

    1、autowire可以写在bean上,也可以写在根元素beans上(写在beans则表示所有的bean都按此规则来自动匹配)

    <bean autowire="byName">     <beans autowire="byName">















  • 相关阅读:
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    FM
    GBDT+LR
    推荐系统架构设计
    DSSM双塔模型
    git
  • 原文地址:https://www.cnblogs.com/meet/p/4758187.html
Copyright © 2011-2022 走看看