spring的自动装配

    xiaoxiao2026-03-05  5

    Spring的自动装配就是将一个bean注入到其它bean的property中去。 除了ref引用方式,Spring有如下四种自动装配方式: Auto-Wiring byName

    Auto-Wiring byType

    Auto-Wiring constructor

    Auto-Wiring autodetect

    sister.java如下:

    package com.sureSand; public class Sisiter { private Girl girl; public Sister(Girl girl) { this.girl = girl; } public void setSisiter(Girl girl) { this.girl = girl; } //...

    }

    girl.java如下:

    package com.sureSand; public class Girl { //... }

    1.我们先看一下正常的“ref”方式来装配bean:

    <bean id="sister" class="com.sureSand.Sister"> <property name="girl" ref="girl" /> </bean> <bean id="girl" class="com.sureSand.Girl" />

    这种装配方式很容易看的出来将bean girl装配到bean sister中。 2.Auto-Wiring byName’

    <bean id="sister" class="com.sureSand.Sister" autowire="byName" /> <bean id="girl" class="com.sureSand.Girl" />

    根据属性property的名字来装配bean,因为bean sister的的property name与bean girl中的id相同,spring会自动装配bean girl到bean sister中的property中去。 3.Auto-Wiring byT

    根据属性property的数据类型来装配bena,bean sister中property数据类型和bean girl中的id数据类型相同,spring会自动装配bean girl到bean sister中的property中去。 但是一旦有两种及以上相同数据类型的bean girl被配置,将抛出UnsatisfiedDependcyException异常。 所以,一旦选择了’byType’类型的自动装配,请确认你的配置文件中每个数据类型定义一个唯一的bean。 4.Auto-Wiring ‘constructor’

    <bean id="sister" class="com.sureSand.Sister" autowire="constructor" /> <bean id="girl" class="com.sureSand.Girl" />

    这种情况下,Spring会寻找与参数数据类型相同的bean,通过构造函数public Customer(Person person)将其注入。5.Auto-Wiring ‘autodetect’

    <bean id="sister" class="com.sureSand.Sister" autowire="autodetect" /> <bean id="girl" class="com.sureSand.Girl" />

    这种情况下,Spring会先寻找Customer中是否有默认的构造函数,如果有相当于上边的’constructor’这种情况,用构造函数注入,否则,用’byType’这种方式注入,所以,此例中通过调用public Customer(Person person)将其注入。

    大家可以明显感觉到自动装配的开发速度比手动快,但是在维护或者别人来查看代码时常常要找这个bean被装配到了哪里,不是很直观,甚至不知道哪一个bean注入到哪一个bean里,请根据实际情况选择装配方式。

    转载请注明原文地址: https://ju.6miu.com/read-1307646.html
    最新回复(0)