是
SgtPeppers
类上使用了
@Component
注解。这个简单的注解表明该类会作为组件类,并
告知Spring
要为这个类创建
bean
。没有必要显式配置
SgtPeppers
bean
,因为这个类使用了
@Component注解,所以
Spring
会为你把事情处理妥当。
不过,组件扫描默认是不启用的。我们还需要显式配置一下
Spring
,从而命令它去寻找带有@Component注解的类,并为其创建bean
。
使用了
@ComponentScan
注解,这个注解能够在
Spring
中启用
组件扫描。
如果没有其他配置的话,
@ComponentScan
默认会扫描与配置类相同的包。因为CDPlayerConfig类位于soundsystem
包中,因此
Spring
将会扫描这个包以及这个包下的所有子包,查找带有@Component注解的类。这样的话,就能发现CompactDisc
,并且会在Spring中自动为其创建一个bean
如果你更倾向于使用
XML
来启用组件扫描的话,那么可以使用
Spring context
命名空间的<context:component-scan>元素。
<context:component-scan base-package="soundsystem">
Spring
支持将
@Named
作为
@Component
注解的替代方案。两者之间有一些细微的差异,但是在大多数场景中,它们是可以互相替换的