dadda
2017-08-29 21:57 Qin奋 阅读(270) 评论(0) 收藏 举报
它提供了三种主要的装配机制:
在XML中进行显式配置。
在Java中进行显式配置。
隐式的bean发现机制和自动装配。
2.2 自动化装配bean
2.2.1 创建可被发现的bean,并装配
概述:
如果Spring能够进行自动化装配的话,那何苦还要显式地将这些bean装配在一起呢?
Spring从两个角度来实现自动化装配:
组件扫描(component scanning):Spring会自动发现应用上下文中所创建的bean。
自动装配(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路径) 会告诉它需要怎么加载配置
浙公网安备 33010602011771号