Spring从两个角度实现自动化装配:
1、组件扫描(component scanning):Spring会自动发现应用上下文中所创建的bean
2、自动装配(autowiring):Spring自动满足bean之间的依赖
组件扫面和自动装配组合在一起能发挥强大的威力。
准备几个bean:
CompactDisc接口:
package spring.component; /** * @ClassName CompactDisc * @Date 2016年12月27日 下午3:26:21 */ public interface CompactDisc { void paly(); }
SgtPepers实现类:
package spring.component.impl; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import spring.component.CompactDisc; /** * @ClassName SgtPepers * @Date 2016年12月27日 下午3:30:04 */ @Component public class SgtPepers implements CompactDisc{ private String title = "Sgt. Pepper's Lonely Hearts Club Band"; private String artist = "The Beatles"; public void paly() { System.out.println("palying " + title + " by " + artist); } }
Spring组件扫描默认是不启用的。
所以显示配置一下Spring,从而命令它去寻找带有@Component注解类,并为其创建bean(有两种方法:1、xml配置;2、java配置【本人优先选这种】)
package spring.component.javaConfig; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import spring.component.CompactDisc; import spring.component.impl.CDPlayer; import spring.component.impl.SgtPepers; /** * @ClassName ComponentScan * @Date 2016年12月27日 下午3:37:38 */ @Configuration @ComponentScan("spring.component") public class CDplayerConfig{ } }
如果扫描多个包使用@ComponentScan(basePackages={"spring.component","..."}) or @ComponentScan(basePackageClasses={....class ,....class})
Junit测试:
package spring.component; import static org.junit.Assert.*; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import spring.component.javaConfig.CDplayerConfig; /** * @ClassName ComponentTest * @Date 2016年12月27日 下午4:03:28 */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes=CDplayerConfig.class) public class CDPlayerTest { @Autowired private CompactDisc cd; private CompactDisc cd2; @Test public void cdNotNull(){ assertNotNull(cd); } }
其中:@Named(java依赖注入规范)可以作为@Component注解的替代方案(有差异)
@Autowired 自动装配
不仅可以使用在构造器上
@Autowired public CDPlayer(CompactDisc cd){ this.cd = cd; }
还能用在属性的Setter方法上
@Autowired public void setCd(CompactDisc cd) { this.cd = cd; }
实际Setter方法并没有特殊之处,@Autowired可以用在类的任何方法上
@Autowired public void insertDisc(){ cd.paly(); }
@Autowired 的required属性设置为false,spring会尝试执行自动装配,但是如果没有匹配的bean,spring将会让这个bean处于未装配的状态(可能会出现NullPointerExcepiton)
其中:@Inject(java依赖注入规范)可以作为@Autowired注解的替代方案(有差异)
相关推荐
在Spring Boot框架中,Bean装配是核心...在component-demo这个示例中,可能会包含一个或多个演示如何装配Bean的代码片段,例如自定义配置类、Bean注入等。通过学习和实践,我们可以加深对Spring Boot Bean装配的理解。
在学习自动装配的过程中,建议先从简单的基于类型的自动装配开始,然后逐步掌握基于注解的自动装配。理解每个bean如何被创建、初始化和装配,以及Spring如何处理这些过程,对于深入理解Spring框架至关重要。 本项目...
ean的自动装配,有4种 (1)no:不做任何操作 (2)byName:根据属性 名 自动装配,设值注入 <bean id="xxx" class="xxx" ></bean> (3)byType:根据属性 类型 自动装配,相同类型多个会抛出异常,设值注入 <bean...
在Spring框架中,自动装配(Auto-Wiring)是一种便捷的方式来管理bean之间的依赖关系,它能够自动将所需的bean注入到目标bean中,而无需显式配置。然而,自动装配并非适用于所有场景,它存在一些限制。以下是一些...
在Spring的XML配置文件中,可以通过`<beans>`标签的`autowire`属性来全局设置自动装配策略,或者在单个`<bean>`标签中通过`autowire`属性指定某一个bean的自动装配方式。 4. 使用注解进行自动装配 Spring 2.5引入了...
在Spring框架中,“自动装配”(Autowiring)是一项核心特性,它允许Spring容器自动为bean注入所需的依赖,而无需显式配置。本篇将深入探讨自动装配的概念、类型以及如何在Spring应用中使用。 自动装配是Spring IoC...
在Spring框架中,BeanDefinition是核心组件之一,它定义了bean的基本信息和元数据,包括bean的类、作用域、依赖关系、初始化方法等。在Spring容器启动时,配置文件或注解中的bean定义会被解析成BeanDefinition对象,...
Spring自动装配Bean实现过程详解 Spring框架提供了自动装配Bean的功能,该功能可以根据Bean的属性名称或类型自动将Bean装配到其他Bean中,从而简化了Bean的配置工作。在本文中,我们将详细介绍Spring自动装配Bean...
6. **Autowiring-mode**:定义了如何自动装配Bean。Spring支持按类型、按名称等多种自动装配模式。 7. **Lazy-initialization-mode**:懒加载模式,表示Bean是否在容器启动时立即创建,还是在首次请求时创建。 8. ...
为了简化这一过程,Spring提供了一种自动创建Bean的机制,这就是所谓的"代码生成"或者"Bean自动生成"。本项目"spring自动生成bean项目"旨在通过自动化的方式,帮助开发者根据数据库表结构快速生成对应的Java Bean...
以上就是Spring使用注解方式装配Bean的基本过程和关键注解的介绍。通过这种方式,我们可以轻松地管理Bean的生命周期,实现依赖注入,以及对Bean的其他配置,极大地提高了代码的可维护性和灵活性。在实际项目中,结合...
本文主要围绕"Spring源码学习七:web应用自动装配Spring配置文件1"这一主题,详细解析Web环境中Spring的初始化过程。 首先,我们注意到在传统的Java应用程序中,通常使用`ClassPathXmlApplicationContext`手动创建...
自动装配是 Spring 框架中的一个功能,它可以自动地将依赖对象注入到 Bean 中。使用 `<bean>` 元素的 `autowire` 属性可以指定自动装配的类型。 五、方法注入 方法注入是依赖注入的一种方式,它要求 Bean 的方法...
- **@Autowired**:用于自动装配Bean的依赖。Spring会尝试根据类型或名称找到合适的Bean进行注入。 - **@Qualifier**:配合@Autowired使用,当有多个相同类型的Bean时,可以指定要注入的具体Bean。 - **@Scope**:...
这里的`autowire="byName"`指示Spring尝试找到一个名为`name`的Bean来自动装配到`Person`类的相应属性上。 Bean的继承是通过`parent`属性实现的,允许一个Bean继承另一个Bean的配置。这样可以重用和覆盖父Bean的...
本文将深入探讨Spring装配Bean的实例代码,帮助你更好地理解这一关键概念。 首先,Spring装配Bean主要有两种方式:XML配置和注解配置。在本例中,我们将重点关注XML配置,对应的压缩包文件名为“springxmldemo”,...
- `autodetect`模式:尝试通过`byType`和`byName`来自动检测并装配Bean。 - `default`模式:如果没有指定其他方式,将使用默认的装配策略。 描述中提到的博文链接指向了一个ITeye上的博客文章,可能详细解释了...
在 Spring 框架中,自动装配 Bean 的属性是非常重要的一部分,今天我们将为大家分享关于在 Spring 中自动装配 Bean 的属性的知识。 首先,Spring 的最基本的能力就是 DI,即依赖注入,或控制反转,它可以为 Bean ...
1. **@Autowired**:这是最常用的注解,用于自动装配bean。Spring会尝试找到类型匹配的bean进行注入。如果存在多个候选bean,则可以通过`@Qualifier`进一步指定。 2. **@Qualifier**:与`@Autowired`配合使用,用于...
在Spring Boot的应用程序启动流程中,自动装配是一个关键特性,它使得开发者无需手动配置bean,而是由Spring Boot自动识别和管理。本节我们将深入探讨自动装配的原理。 首先,Spring Boot的启动是从`run`方法开始的...