它提供了三种主要的装配机制:测试
在XML中进行显式配置。ui
在Java中进行显式配置。spa
隐式的bean发现机制和自动装配。设计
2.2 自动化装配bean3d
2.2.1 建立可被发现的bean,并装配component
概述:xml
若是Spring可以进行自动化装配的话,那何苦还要显式地将这些bean装配在一块儿呢?blog
Spring从两个角度来实现自动化装配:接口
组件扫描(component scanning):Spring会自动发现应用上下文中所建立的bean。ci
自动装配(autowiring):Spring自动知足bean之间的依赖。
设计理念:@Component注解+@Autowired+接口 利用Java的接口的多肽和Spring的自动装配配合对有依赖的代码组件进行合理的解耦。
1. 扫描设置:
方式1:@ComponentScan+@Configuration注解:默认会扫描与配置类相同的包。由于CDPlayerConfig类(配置 类)
位于soundsystem包中,所以Spring将会扫描这个包以及这个包下的全部子包,查找带有@Component注解的类。
@ComponentScan(basePackages={“pack1”,”pack2”})
@ComponentScan(basePackageClasses={“Class1.class”,”Class2.class”})
例子:
方式2:XML <context:component-scan base-package=“”>
2. 为组件扫描的bean命名:
方式1:默认Spring会根据类名为其指定一个ID,将类名的第一个字母变为小写 相似于 financialService
方式2: @Component(“financialService”)
方式3:Java依赖注入规范(Java Dependency Injection)中所提供的@Named注解 (不多用)
3. 自动装配
@Autowired注解
1.用在构造器上
2.用在属性的Setter方法上
3.用在属性上
4.无论是构造器、Setter方法仍是其余的方法,Spring都会尝试知足方法参数上所声明的依赖。假
若有且只有一个bean匹配依赖需求的话,那么这个bean将会被装配进来。
5.@Autowired的required属性设置为false:没有匹配的bean,不会抛出异常。
4.显式配置
1.Java
1.建立JavaConfig配置类,为其添加@Configuration注解
2.在JavaConfig中声明bean,咱们须要编写一个方法,这个方法会建立所需类型的实例,而后
给这个方法添加@Bean注解。
2.XML
1. 建立一个XML文件,而且要以<beans>元素为根
2. 声明一个简单的<bean>
@RunWith(SpringJUnit4ClassRunner):在测试开始的时候自动建立Spring的应用上下文。
@ContextConfiguration(classes=“配置类.class” 或者xml路径) 会告诉它须要怎么加载配置