版权声明:本文摘自《Spring实战》第4版,[美] Craig Walls 著,张卫滨 译。
本文仅作为学习与交流使用,如有侵权请留言联系作者。转载请注明出处。
目录
Spring配置的可选方案主要有三种:
- 在xml中进行显式配置;
- 在java中进行显式配置;
- 隐式的bean发现机制和自动装配;
一.自动化装配Bean
spring从两个角度来实现自动化装配:
1.组件扫描(component scanning):spring会自动发现应用上下文所创建的bean。
2.自动装配(autowiring):spring自动满足spring之间的依赖。
组件扫描和自动装配组合在一起就能发挥出强大的威力,能将你的显示配置降低到最少。
例子:CD(compact disc)要插入(注入)到CD播放器中,CD播放器才有用。CD播放器依赖于CD才能完成它的使命。
在Java中定义CD的概念。定义一个CD的接口CompactDisc。作为接口,它定义了CD播放器对一盘CD所能进行的操作。
package soundsystem;
public interface CompactDisc{
void play();
}
定义一个带有@Component注解的CompactDisc的实现类SgtPeppers。(可以有多个实现)
package soundsystem;
import org.springframework.stereotype.Component;
@Component
public class SgtPeppers implements CompactDisc {
private String title = "Sgt. Peppert's Lonely Hearts Club Band";
private String artist = "The Beatles";
public void play() {
System.out.println("Playing "+ title + " by " + artist);
}
}
SgtPeppers的具体内容并不重要。需要注意的是SgtPeppers类上使用了@Component注解,这个简单的注解表明该类会作为组件类,并告知Spring要为这个类创建bean。
组件扫描默认是不启用的。我们还需要显式配置以下Spring,命令它去寻找带有@Component注解的类,并为其创建bean。下面的配置类完成了这项任务的最简洁配置。
@ComponentScan注解启用了组件扫描。
package soundsystem;
import org.springframework.context.annotation.ComponentScan