Bean的自动装配---ByType
ByType模式
如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配。如果存在多个该类型的bean,那么将会抛出异常,并指出不能使用byType方式进行自动装配。若没有找到相匹配的bean,则什么事都不发生,属性也不会被设置。如果你不希望这样,那么可以通过设置dependency-check="objects"让Spring抛出异常。
案例:
EmpServiceImpl .java
public class EmpServiceImpl {
//封装了AddressServiceImpl类的对象
private AddressServiceImpl companyAddress;
public void setCompanyAddress(AddressServiceImpl companyAddress) {
this.companyAddress = companyAddress;
}
}
AddressServiceImpl.java
public class AddressServiceImpl {
//定义一个address属性
private String address;
public void setAddress(String address) {
this.address = address;
}
}
HomeAddressServiceImpl.java
public class HomeAddressServiceImpl extends AddressServiceImpl{
private String address;
public void setAddress(String address) {
this.address = address;
}
public HomeAddressServiceImpl() {
super();
}
public HomeAddressServiceImpl(String address) {
this.address = address;
}
}
Xml中的bean
<bean id="homeAddressServiceImpl" class="cn.csdn.service.HomeAddressServiceImpl"
scope="singleton">
<property name="address">
<value>石家庄</value>
</property>
<constructor-arg index="0">
<value>北京</value>
</constructor-arg>
解析:若不写此构造器,代码中也没有写无参构造方法则运行会出现bug 此段构造器的设置和代码中的无参构造方法必须出现一个。
</bean>
<bean id="addressServiceImpl" class="cn.csdn.service.AddressServiceImpl"
scope="singleton">
<property name="address">
<value>北京中关村</value>
</property>
</bean>
解析:addressServiceImpl与homeAddressServiceImpl不能同时出现 因为这两个类中都含有address属性即出现两个相同类型的bean 则将会出现异常。
<bean id="empServiceImpl" class="cn.csdn.service.EmpServiceImpl"
scope="singleton" autowire="byType" dependency-check="objects" />
分享到:
相关推荐
(2)byName:根据属性 名 自动装配,设值注入 <bean id="xxx" class="xxx" ></bean> (3)byType:根据属性 类型 自动装配,相同类型多个会抛出异常,设值注入 <bean class="xxx" ></bean> (4)constructor:与 ...
本节将详细介绍基于XML、注解(Annotation)以及自动装配这三种Bean装配方式。 首先,我们来理解什么是Bean的装配。Bean的装配,也称为依赖注入,是指将对象所需的依赖关系(例如其他对象或服务)设置到该对象中,...
解决IDEA中自动装配,找不到类型的bean问题
Spring通过组件扫描(Component Scanning)和自动装配(Autowiring)来实现这一目标,使得开发者无需手动配置大部分bean的依赖关系。 首先,我们来看组件扫描。组件扫描允许Spring容器自动发现应用上下文中创建的...
2. **基于类型的自动装配(By Type Auto-Wiring)**:这是最常用的自动装配方式,Spring会查找与目标bean类型匹配的bean,并将其注入。如果有多个匹配的bean,Spring会抛出异常。可以在bean定义中使用`autowired`...
2. 自动装配的类型 Spring提供了多种自动装配模式: - byName:根据bean的属性名自动装配。如果bean的属性名为其他bean的id,那么Spring会尝试将这个bean注入。 - byType:根据属性的类型自动装配。Spring会查找与该...
2. **Spring的bean定义**:bean如何在配置中声明,以及它们如何通过自动装配与其他bean关联。 3. **@Autowired注解**:这是Spring提供的一个注解,用于标记需要自动装配的字段、构造函数、方法或参数。 4. **@...
本文将深入探讨Spring Bean的继承与自动装配。 首先,让我们了解Bean的基本定义。在Spring配置文件中,`<beans>`元素作为根元素,包含了一系列`<bean>`子元素。每个`<bean>`元素定义了一个Bean实例,它由一个唯一的...
【JavaBean与Web Form表单自动装配】是Web开发中常用的一种技术,特别是在使用像Struts2这样的MVC框架时,能够极大地简化数据绑定的过程。这个过程的核心是将用户在Web表单中填写的数据自动地映射到JavaBean对象的...
但设置了autowire="byName",Spring会在配置文件中自动寻找与属性名字personDao相同的bean,找到后,通过调用setPersonDao(PersonDao personDao)方法将id为personDao的bean自动装配到personService和personAction中...
自动装配是Spring自动检测Bean之间的依赖关系,并自动注入这些依赖的过程。它可以极大减少配置量,但缺点是可能因为过于复杂而难以预测注入结果,特别是在复杂的项目中。Spring提供了五种自动装配模式:no(默认不...
2. **byType**:基于bean的类型进行自动装配。如果一个bean的属性类型在Spring容器中有一个唯一的匹配bean,那么这个bean会被注入。 3. **constructor**:构造函数级别的自动装配,Spring会在bean实例化时,通过...
2. `@Autowired`: Spring自动装配的主要注解,用于注入Bean的依赖。当Spring容器找不到精确匹配的类型时,可以通过类型或属性名进行自动匹配。 3. `@Qualifier`: 当有多个相同类型的Bean时,`@Qualifier`可以用来...
在Spring框架中,自动装配(Autowiring)是一种机制,它允许Spring容器自动为bean提供其依赖,而无需显式配置。自动装配极大地简化了应用的配置,使得开发者可以更专注于业务逻辑。本文将深入探讨Spring自动装配的...
集合自动装配是指Spring框架自动填充List、Map或Set类型的属性,根据配置文件中的bean定义,将相应的bean实例注入到这些集合中。这种方式减少了手动创建和管理对象的复杂性,提高了代码的可维护性和可测试性。 三、...
在这个"spring自动装配项目struts2"中,我们将探讨如何整合Spring的自动装配特性与Struts2框架,以及Hibernate作为持久层框架的使用。 首先,让我们了解Spring的自动装配(Auto-Wiring)。自动装配是Spring框架的...
文章目录一、注解实现bean自动装配二、注解开发 一、注解实现bean自动装配 自动装配是Spring满足bean依赖一种方式!Spring会在上下文中自动寻找,并自动给bean装配属性! 下面我们来做以下实验 建立如下测试环境:一...
在Spring框架中,自动装配(Auto-Wiring)是一种便捷的方式来管理bean之间的依赖关系,它能够自动将所需的bean注入到目标bean中,而无需显式配置。然而,自动装配并非适用于所有场景,它存在一些限制。以下是一些...
2. **byType**:基于类型匹配的自动装配。Spring会查找与当前Bean属性类型相匹配的Bean,如果有多个相同类型的Bean,Spring会抛出异常,除非你使用`@Primary`或`@Qualifier`注解来指定具体哪一个。 3. **...
2. **自动装配(Auto-Wiring)** Spring Boot的自动装配基于`@Autowired`注解和组件扫描。当我们在类中声明一个字段或者方法参数,标记为`@Autowired`,Spring会尝试找到合适的Bean进行注入。这个过程主要由`...