基本介绍
关于各种配置,从来没搞懂过。但是觉得框架发展这么快,而且结构这么宏大,其实现微观上来讲应该从来没有一种标准方式、更没有说是固定的几种。比如Spring专有的@Component、@Autowired注解,大多数情况下都可以被javax.inject包下的@Named和@Inject代替。本博文汇总《Spring 实战 第四版》2.1和2.2内容。
自动装配是使用spring满足bean依赖的一种方法,满足以来的过程中,spring会在应用上下文中为某个bean寻找其依赖的bean。
Spring中bean有三种装配机制,分别是:
1. 在xml中显示配置;
2. 在java中显示配置;
3. 隐式的bean发现机制和自动装配。
这里我们主要讲第三种:自动化的装配bean。
自动化的装配bean
Spring的自动装配需要从来能个角度来实现,或者说是两个操作:
1.组件扫描(component scanning):spring会自动发现应用上下文中所创建的bean;
2.自动装配(autowiring):spring自动满足bean之间的依赖,也就是我们上篇博文说的IoC/DI;
组件扫描和自动装配组合发挥巨大威力,使的显示的配置降低到最少。
一.bean自动装配的基本方式及测试
这里以“光碟机”和“cd播放器”为例来介绍自动装配的基本实现方式。假设我们有个光碟接口CompacDisc,其具体实现类为各个明星的专辑,实现如下:
package com.example.springboot.demo.soundsystem;
import org.springframework.stereotype.Component;
@Component//表明该类会作为组件类,告知spring为这个类创建bean
public class SgtPeppers implements CompactDisc {
private String title="ye hui mei";
private String artist="zhou jie lun";
@Override
public void play() {
System.out.println("playing "+title+" by "+artist);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
通过@Component告知Spring为SgtPeppers 创建bean是不够的,我们还需要让spring知道去哪里扫描可能带有@Component的类,盲目的全局扫描是不可行的。这里我们使用在配置类中使用@Component注解启用组件扫描,也就是@Configuration+@ComponentScan。简单的一逼,实例如下:
package com.example.springboot.demo.soundsystem;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;