Spring自动装配Bean属性的四种方式

什么是自动装配

装配即是创建应用对象之间协作关系的行为,其实也就是注入依赖的属性。
例如:

/**
 * 描述鞋子的类
 */
public class Boot{
}

/**
 * 描述人的类
 */
public class Person{
    private Boot boot;

    public Person(){
    }

    public Person(Boot boot){
        this.boot = boot;
    }

    public void setBoot(Boot boot){
        this.boot = boot;
    }
}

在这个非常简单的Person类中,拥有一个属性boot(鞋子),也就可以说Person类依赖于类Boot,或者说Boot类是Person类的依赖。
注入依赖的意思就是说,在定义一个bean对象(这里指的是Person对象)的时候,需要给指定的属性赋值(这里可以指的是boot属性)。

自动装配:在定义一个bean的时候,自动给某一些属性注入基本数据类型的值或者其他bean的引用。

而自动装配也即是自动注入依赖是相比于用XML文件来手动注入的。用XML文件来手动输入,也即是用元素< constructor-arg>和< property>来装配,将会由具体的文章来详细的描述,这里不再赘述。

自动装配有什么好处

自动装配有助于减少甚至消除配置<property>元素和<constructor-arg>,减少XML的配置数量,当然不用写XML文件,我们自然要轻松地多。

如何使用自动装配

想要使用自动装配就必须要详细地了解自动装配。

自动装配类型

自动装配分成四种:

  • byName

按照bean的属性名称来匹配要装配的bean
例如:Person类中的属性boot按照此规则则要装配id为boot的其他bean到boot属性中,就是新建一个id为boot的其他bean对象来赋值给Person类的boot属性。

Boot boot = new Boot();
Person person = new Person();
person.setBoot(boot);//根据属性的名称来匹配
  • byType

按照bean的类型来匹配要装配的bean
例如:Person类的的属性类型为Boot,如果按照byType来进行自动装配,则会匹配Boot类的bean对象

Boot boot2 = new Boot();
Person person = new Person();
person.setBoot(boot2);//它根据类型来匹配,不根据名称来匹配
  • constructor

按照bean的构造器入参的类型来进行匹配
例如:Person类有一个拥有一个入参的构造器,其入参的类型为Boot,所以它会装配类型为Boot的bean。

Boot boot2 = new Boot();
Person person = new Person(boot2);//它根据类型来匹配,不根据名称来匹配
  • autodetect(自动探测)
    先使用constructor进行装配,如果不成功就使用byType来装配

如何设置自动装配

单独配置

<bean id = "auto" class = "com.wang.AutoClass" autowire="byType" />

即是通过<bean>元素的autowire属性来设置四种自动装配类型

默认配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xsi:schemaLocation="http://www.springframework.org/schema/beans                  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd default-autowire ="byType">

如果每一个bean的自动装配的方式都相同,则可以设置默认配置,就不需要每一个bean元素都去配置。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值