byName讲解

本文详细介绍了Spring框架中通过属性名自动装配的机制及其配置方法。使用byname方式时,Spring会根据属性名查找匹配的bean进行自动装配。文章还强调了自动装配针对的是bean而非属性值,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配。例如,在bean定义中将autowire设置为by name,而该bean包含student属性(同时提供setStudent(..)方法),Spring就会查找名为studentbean定义,并用它来装配给student属性。

Xml中的文件的配置如下:

<bean id="student" class="com.csdn.bean.Student" >
	<property name="name"><value>朱磊</value></property>
	</bean>
	<bean id="GreetingServliceImpl" class="com.csdn.service.GreetingServliceImpl"
		autowire="byName" dependency-check="all">
		<property name="say" value="hello"></property>
	</bean>
</beans>

 

 

Student中的如下

 

package com.csdn.bean;

public class Student {
	private String name;


	public void setName(String name) {
		this.name = name;
	}

}

 

 

package com.csdn.service;

import com.csdn.bean.Student;

public class GreetingServliceImpl implements GreetingServlice {
	private String say;

	@Override
	public void say() {
		System.out.println("这是我说的话" + say);
	}

	public void setSay(String say) {
		this.say = say;
	}

	private Student student;

	public void setStudent(Student student) {
		this.student = student;
	}
}

 

 

值得注意的是:自动装配指的是装配bean的值而不是属性值,网上很多文章都有错误我特意的查了查资料。还有就是而该bean包含student属性(同时必须提供setStudent(..)方法),byName根据set依赖注入的。

如果xml文件中包括多个相容类型的bean利用byName会出错。(这里说的相同类型包括,如类B继承类A,如果bean中定义了类A和类B 都会出错)错误如下。

   org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name '类名' defined in file

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值