我想澄清一下:
关于自动装配“自动检测”
在某些资源中,我发现了 “找到默认构造函数,然后”自动布线构造函数“适用。 如果不是“按类型自动接线”适用。
在一些资源中,我发现了 “找到默认构造函数,然后”按类型自动布线“适用。 如果不是“自动布线构造器”适用。
任何人都可以确认哪一个是正确的吗?与此相混淆。
答案 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模式。