Spring Autowiring自动检测

时间:2014-12-05 09:31:55

标签: java spring java-ee autowired

我想澄清一下:

关于自动装配“自动检测”

在某些资源中,我发现了 “找到默认构造函数,然后”自动布线构造函数“适用。 如果不是“按类型自动接线”适用。

在一些资源中,我发现了 “找到默认构造函数,然后”按类型自动布线“适用。 如果不是“自动布线构造器”适用。

任何人都可以确认哪一个是正确的吗?与此相混淆。

2 个答案:

答案 0 :(得分:4)

在Spring框架中,您可以使用自动布线功能自动连接Bean。要启用它,只需在。

中定义“autowire”属性
<bean id="customer" class="com.midhun.common.Customer" autowire="byName" />

在Spring中,支持5种自动接线模式。

1.no - 默认,无自动接线,通过“ref”属性手动设置

2.byName - 按属性名称自动连线。如果bean的名称与其他bean的名称相同 财产,汽车线。

3.byType - 按属性数据类型自动连线。如果bean的数据类型与其他bean属性的数据类型兼容,则自动连接它。

4.constructor - 构造函数参数中的byType模式。

5.autodetect - 如果找到默认构造函数,请使用“由构造函数自动装配”;否则,请使用“按类型自动装配”。

不,您不需要使用默认(无arg)构造函数。如果没有在bean中定义构造函数,它将选择它,如果你想要你可以使用..自动布线的类型取决于你的要求

@Qualifier还可以帮助您指定注射

你可以通过@Quanlifier告诉Spring应该自动连接哪个bean。

package com.midhun.pgm;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

public class Customer {

    @Autowired
    @Qualifier("personA")
    private Person person;
    //...

}

答案 1 :(得分:0)

这应该没有混淆。

autodetect的

自动装配使用两种模式中的任何一种,即构造函数或byType模式。首先,它会尝试寻找有效的 带参数的构造函数,如果找到,则选择构造函数模式。如果bean中没有定义构造函数,或者 显式默认的no-args构造函数存在,选择autowire byType模式。