一,介绍Bean的装配机制
在Spring中,容器负责对象的创建并通过DI来协调对象之间的关系.但是我们要告诉Spring创建哪些Bean并且如何将其装配在一起.,装配wiring就是DI依赖注入的本质.
Spring装配bean有几种机制:
在XML中进行显式配置
在Java中进行显式配置
隐式的bean发现机制和自动装配
三种机制可能会给我们选择上造成困扰?哪个好?是不是不同情况有不同的选择?
答:会在很多场景下,选择哪种机制完全取决于个人的喜好,但是我推荐用自动装配,可以自动装配我们为什么还要费力气去配置.而且三种机制可以互相搭配,你可以用XML装配一些Bean,使用Spring基于Java的配置(JavaConfig)来装配另一些Bean,剩余的bean让Spring去自动发现装配.
但是,尽可能的用自动装配,显式装配越少越好.当不得不显式装配的时候(比如,有些源码不是你来维护的,但你要为这些代码配置bean的时候),推荐使用JavaConfig,因为他XML更安全更强大.只有在你想用XML的命名空间,并且在JavaConfig中没有同样的实现,才选择XML.
二.自动化装配Bean
Spring从两个方面实现自动装配:
组件扫描(component scanning):Spring会自动发现应用上下文所创建的bean.
自动装配(Autowiring):Spring会自动满足bean之间的依赖.
组件扫描和自动装配组合在一起能完美的降级显式配置.
举例:创建一个动物类animal,Spring会发现并将它创建成一个bean.在创建一个people类,并将animal类注入进来.
1.先创建一个动物接口,定义了有个play方法 用面向接口的方法能松耦.接口的内容并不重要
1 //make an animal interface 2 pack test; 3 4 public interface Animal{ 5 void play(): 6 }