目录
1.Spring 配置的可选方案
springt提供三种主要的配置方式:
(1)在 XML 中进行显式配置。
(2)在 Java 中进行显式配置。
(3)隐式的 bean 发现机制和自动装配。
尽可能的使用(3)即隐式的bean发现机制和自动装配。
2.自动化装配bean
2.1 创建可被发现的 bean
2.1.1 Spring 从两个角度来实现自动化装配:
(1)组件扫描(component scanning):Spring 会自动发现应用上下文中所创建的 bean。
(2)自动装配(autowiring):Spring 自动满足 bean 之间的依赖。
2.1.2 常用注解:
(1)@Component : 表明该类会作为组件类,并告知 Spring 要为这个类创建 bean.【默认bean创建的ID名:类或方法名首字母小写;或者通过@Componet("newBeanID")的方式命名】
(2)@ComponentScan: 在 Spring 中启用组件扫描,如果没有其他配置的话,默认会扫描与配置类相同的包。
(3)@Autowired: 声明进行自动装配
3.通过 Java 代码装配 bean
@Bean
public CompactDisc sgtPeppers() {
return new SgtPeppers();
}
在 JavaConfig 中声明 bean,编写一个方法,这个方法会创建所需类型的实例,然后给这个方法添加 @Bean 注解
4.通过 XML 装配 bean
4.1 配置规范:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context" >
<!-- configuration details go here />
</beans>
4.2 声明bean的方式:
使用 <bean>
元素并指定 class 属性,如:
<bean id="compactDisc" class="soundsystem.SgtPeppers" />
4.3 声明 DI:
使用<constructor-arg>
元素,如
<bean id="cdPlayer" class="soundsystem.CDPlayer">
<constructor-arg ref="compactDisc">
</bean>
javaConfig与xml方式
package soundsystem;
import java.util.List;
public class BlankDisc implements CompactDisc {
private String title;
private String artist;
private List<String> tracks;
public BlankDisc(String title, String artist, List<String> tracks) {
this.title = title;
this.artist = artist;
this.tracks = tracks;
}
public void play() {
System.out.println("Playing " + title + " by " + artist);
for (String track : tracks) {
System.out.println("-Track: " + track);
}
}
}
<bean id="compactDisc" class="soundsystem.BlankDisc">
<property name="title" value="Sgt. Pepper's Lonely Hearts Club Band" />
<property name="artist" value="The Beatles">
<property name="tracks">
<list>
<value>Sgt. Pepper's Lonely Hearts Club Band</value>
<value>With a Little Help from My Friends</value>
<value>Lucy in the Sky with Diamonds</value>
<value>Getting Better</value>
<value>Fixing a Hole</value>
<!-- ...other tracks omitted for brevity... -->
</list>
</property>
</bean>
5. 小结
Spring 框架的核心是 Spring 容器。容器负责管理应用中组件的生命周期,它会创建这些组件并保证它们的依赖能够得到满足,这样的话,组件才能完成预定的任务。
在本章中,我们看到了在 Spring 中装配 bean 的三种主要方式:自动化配置、基于 Java 的显式配置以及基于 XML 的显式配置。不管你采用什么方式,这些技术都描述了 Spring 应用中的组件以及这些组件之间的关系。
尽可能使用自动化配置,以避免显式配置所带来的维护成本。但是,如果确实需要显式配置 Spring 的话,应该优先选择基于 Java 的配置,它比基于 XML 的配置更加强大、类型安全并且易于重构。