在Spring中,对象无需自己查找或者创建与其所关联的其他对象。相反,容器负责把需要相互协作的对象引用赋予各个对象。
创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入(DI)的本质。
一、Spring配置的可选方案。
Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系,当描述bean如何进行装配时,Spring具有非常大的灵活性,它提供了三种主要的装配机制:
- 在XML中进行显式配置
- 在Java中进行显式配置
- 隐式地bean发现机制和自动装配
原则上,有三条准则:
- 尽可能地使用自动装配的机制,显式配置越少越好。
- 当你必须要显式配置bean的时候(有些源码不是由你来维护的,而当你需要为这些代码配置bean的时候),推荐使用类型安全并且比XML更加强大的JavaConfig。
- 只有当你想要使用便利的XML命名空间,并且在JavaConfig中没有同样的实现时,才应该使用XML。
二、自动化装配bean
在便利性方面,最强大的还是Spring的自动化配置。
Spring从两个角度来实现自动化装配:
- 组件扫描(component scanning):Spring会自动发现应用上下文中所创建的bean。
- 自动装配(autowiring):Spring自动满足bean之间的依赖。
组件扫描和自动装配组合在一起就能发挥出强大的威力,它们能够将你的显示配置降低到最少。
利用带有注释的代码来解释这种装配方式:
1 package autoConfig1; 2 /** 3 * 如果你不将CD插入(注入)到CD播放器中,那么CD播放器其实没有太大用处的。 4 * 所以可以这样说,CD播放器依赖于CD才能完成它的使命。 5 * CompactDisc接口定义了CD播放器对一盘CD所能进行的操作。 6 * 它将CD播放器的任意实现与CD本身的耦合降低到了最小的程度。 7 */ 8 public interface CompactDisc { 9 10 void play(); 11 }
扫描二维码关注公众号,回复:
991442 查看本文章