自动装配之byName
byName:根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配。例如,在bean定义中将autowire设置为by name,而该bean包含master属性(同时提供setMaster(..)方法),Spring就会查找名为master
的bean定义,并用它来装配给master属性。
下面通过示例来理解:
JavaBean代码:
//JavaBeanàPerson定义了一个name属性,和一个相应的set依赖注入方法
public class Person {
private String name;
public void setName(String name) {
this.name = name;
}
}
//JavaBeanàStudentServiceImpl继承了Person
public class StudentServiceImpl extends Person{
}
//JavaBeanàTeacherServiceImpl,定义一个studentSerciceImpl,和一个相应的set依赖注入方法和get方法。
public class TeacherServiceImpl {
private StudentServiceImpl studentServiceImpl;
public void setStudentServiceImpl(StudentServiceImpl studentServiceImpl) {
this.studentServiceImpl = studentServiceImpl;
}
public StudentServiceImpl getStudentServiceImpl() {
return studentServiceImpl;
}
}
byname.xml文件:
不用byName:
<bean id="person" class="cn.csdn.byname.Person">
<property name="name">
<value>Well_Being</value>
</property>
</bean>
<bean id="studentServiceImpl" class="cn.csdn.byname.StudentServiceImpl" scope="singleton" parent="person"/>
<bean id="teacherServiceImpl" class="cn.csdn.byname.TeacherServiceImpl" scope="singleton">
<property name="studentServiceImpl" ref="studentServiceImpl"/>
</bean>
用byName:
<bean id="person" class="cn.csdn.byname.Person">
<property name="name">
<value>Well_Being</value>
</property>
</bean>
<bean id="studentServiceImpl" class="cn.csdn.byname.StudentServiceImpl" scope="singleton" parent="person"/>
<bean id="teacherServiceImpl" class="cn.csdn.byname.TeacherServiceImpl" scope="singleton" autowire="byName"></bean>
黄色区域代表两者的区别:
分享到:
相关推荐
本篇文章将深入探讨两种主要的自动装配方式:byName和byType,以及它们在实际应用中的实例。 **1. byName自动装配** ByName自动装配是基于bean的属性名来寻找依赖的。假设我们有两个bean,一个是`DataSource`类型...
(2)byName:根据属性 名 自动装配,设值注入 <bean id="xxx" class="xxx" ></bean> (3)byType:根据属性 类型 自动装配,相同类型多个会抛出异常,设值注入 <bean class="xxx" ></bean> (4)constructor:与 ...
在XML配置中,可以使用`autowire="byName"`开启此功能。 4. **基于注解的自动装配(Annotation-Based Auto-Wiring)**:使用`@Autowired`注解在字段、构造函数、方法或参数级别来指示Spring进行自动装配。默认也是...
- byName:根据bean的属性名自动装配。如果bean的属性名为其他bean的id,那么Spring会尝试将这个bean注入。 - byType:根据属性的类型自动装配。Spring会查找与该属性类型匹配的bean,并将其注入。 - constructor:...
在本节中,我们将深入探讨“自动装配”这一核心概念,特别是在编程领域,尤其是与软件开发框架相关的应用。自动装配是依赖注入(Dependency Injection,DI)的一种实现方式,它简化了对象之间的关联设置,使代码更加...
1. **byName**:基于bean的名称进行自动装配。当Spring容器在bean的属性上发现@Autowired注解时,如果没有指定qualifier,那么Spring会尝试找到一个与该属性名称相同的bean来注入。 2. **byType**:基于bean的类型...
其中,byName是指根据Bean对象的名称来进行自动装配,byType是指根据Bean对象的类型来进行自动装配,constructor是指使用构造方法来进行自动装配,autodetect是指自动选择byType或constructor的自动装配方式,no是指...
Spring自动装配提供了几种模式来处理这些依赖,如`byName`、`byType`、`constructor`、`autodetect`和`default`。这些模式帮助Spring容器识别并注入合适的依赖。 - `byName`模式:根据属性名寻找匹配的Bean名称进行...
Spring提供了多种自动装配方式,如byType、byName等,可以根据配置或注解来实现。在项目中,通过配置Spring的bean定义,或者使用@Autowired注解,我们可以让Spring自动为我们的bean注入所需的依赖,简化了代码并增强...
2. **byName**:根据bean的属性名匹配bean的ID,将相同名称的bean注入。 3. **byType**:如果一个bean的属性类型与另一个bean的类型相同,那么这个类型的bean将被注入。 4. **构造函数自动装配**:通过bean的构造...
1. **byName**:基于Bean名称的自动装配。Spring会查找与当前Bean属性名相同的其他Bean,并将其注入。例如,如果一个Bean有一个名为`dataSource`的属性,Spring会尝试找到一个名字为`dataSource`的Bean来注入。 2. ...
本文将深入探讨Spring中的六种自动装配方式:byType、byName、no、constructor、autodetect和default。 1. byType(按类型装配) 当Spring容器在配置文件中找不到明确的通过`ref`属性指定的依赖时,会尝试通过类型...
本文将详细介绍Spring框架中的五种自动装配模式:`no`、`byName`、`byType`、`constructor`以及`autodetect`,帮助开发者更好地理解和应用这些模式。 #### 二、自动装配模式概览 自动装配是指Spring容器根据一定的...
在 Spring 中,自动装配是通过 AutowireCapableBeanFactory 接口来实现的,该接口定义了四种自动装配策略:byName、byType、constructor 和 AUTOWIRE_AUTODETECT(已被弃用)。 1. byName 自动装配 byName 自动...
byName 自动装配是指通过设置 property 标签的 autowire 属性为 byName,Spring 将自动寻找一个与该属性名称相同或 id 相同的 Bean,注入进来。例如: ```xml <property name="driverClassName" value=...
* byName:根据Property的名称自动装配,如果一个Bean的名称和另一个Bean中的Property名称相同,则自动装配这个Bean到Property中。 * byType:根据Property的数据类型自动装配,如果一个Bean的数据类型兼容另一个...
在本章中,我们将深入探讨Spring框架的核心特性之一——自动装配和方法注入。Spring作为一款广泛应用的Java企业级开发框架,极大地简化了依赖管理,提高了代码的可测试性和可维护性。自动装配和方法注入是Spring实现...
这里的`autowire="byName"`指示Spring尝试找到一个名为`name`的Bean来自动装配到`Person`类的相应属性上。 Bean的继承是通过`parent`属性实现的,允许一个Bean继承另一个Bean的配置。这样可以重用和覆盖父Bean的...