1、Spring配置的可选方案
三种主要装配机制:
- XML中显式配置
- Java中显式配置
- 隐式的bean发现机制和自动装配
2、自动化装配bean
自动装配的基础:
- 组件扫描
- 自动装配
2.1、组件扫描
组件扫描默认是不启用的,可以通过Java或XML的方式进行启用,启用后会扫描配置类所在包内的组件,并会在Spring容器中自动为其创建一个bean。
使用Java配置启动组件扫描:
@Configuration
@ComponentScan
public class xxxConfig{
}
通过XML方式启动组件扫描:
<context:component-scan base-package="xxxxxx"/>
为组件扫描的bean命名(默认是类名第一个字母变为小写):
@Component("xxxxxx")
@Named("xxxxxx") //Named与Component大多数场景可互换
设置组件扫描的基础包:
@ComponentScan(basePackages={"xxxxx","xxxxx"}) //基础包以string类型表示,但是并不安全
@ComponentScan(basePackageClasses={"xxx.class","xxxxx.class"}) //类或接口所在的包作为基础包
采用第二种方式更好的选择是在包中创建一个用来进行扫描的空标记接口(marker interface),因为在稍后重构代码的过程中有可能作为标记的类和接口被移除。
2.2、自动装配
自动装配例子:
@Autowired(required=false) //或者使用@Inject,基本区别不大,只是Autowired是spring特有的
public CDPlayer(CompactDisc cd){
this.cd = cd;
} //required属性谨慎使用(如果没有null检查的话)