《Spring实战》学习笔记:装配Bean
一、装配
Spring框架的核心是spring容器。容器负责管理应用中组件的生命周期,它会创建这些组件并保证他们的依赖能得到满足。创建应用对象之间协作关系的行为称为装配,这也是依赖注入的本质。
二、装配Bean的三种方式
2.1 自动化配置
Spring从两个角度来实现自动化装配:
1、组件扫描(component scanning):Spring会自动发现应用上下文中所创建的bean。注意,组件扫描默认是不启用的,需要显式配置一下。
2、自动装配(autowiring):Spring自动满足bean之间的依赖。@Autowired(Spring特有的注解) @Inject(来源于Java依赖注入规范)
2.2 基于Java的配置
1、创建配置类
创建JavaConfigure类的关键在于为其添加@Configuration注解。该注解表明这个类是一个配置类,应该包含在Spring应用上下文中如何创建bean的细节。
2、申明简单的bean
@Bean注解会告诉Spring这个方法会返回一个对象,该对象要注册为Spring应用上下文中的bean,方法体中包含了产生bean实例的逻辑。
@Bean
public Compactdisc sgtPeppers(){
return new SgtPeppers();
}
3、借助JavaConfig实现注入
在JavaConfig中装配bean的最简单的方式是引用创建bean的方法。需要注意的是,sgtPeppers()方法添加了@Bean注解,Spring将会拦截所有对它的调用,确保直接返回该方法所创建的bean,而不是每次都对其进行实际的调用。在默认情况下,Spring中的bean都是单例的。
@Bean
public Cdplayer cdplayer(){
return new Cdplayer (sgtPeppers());
}
2.3 基于XML的显式配置
1、创建XML配置规范
要创建一个XML文件,以<bean>元素为根。
2、声明一个简单的<bean>
没有明确给定id,这个bean将会根据全限定类名命名。
<bean class = "Soundsystem.SgtPeppers" />
尽管自动化的bean命名很方便,但极不方便在之后引用。我们需要给定id属性。
<bean id="compactdisc" class = "Soundsystem.SgtPeppers" />
3、借助构造器注入初始化bean
4、设置属性
三、总结
1、尽可能地使用自动装配机制,减少显示配置的使用。在必须使用显示配置的时候,尽量使用类型安全、功能更强大的基于Java的配置。当想要使用便利的XML命名空间,并且在基于Java的配置中没有同样的实现时,才应该使用基于XML的显式配置。
2、JavaConfig优于XML点在于,前者功能更强大,类型安全、易于重构。