IOC容器——依赖

控制反转就是由容器来控制bean之间的依赖关系。

  • 依赖注入

spring容器注入方式主要有两种,一种是构造方法注入,另外一种是setter注入。

 

1.构造方法注入

 

构造方法注入有三种构造方法属性匹配方式,一种是通过类型匹配,一种是通过索引匹配,另外一种是通过名称匹配(只适用于Spring3.0以上)。

 

2.setter注入

 

setter注入需要无参的构造方法或者无参的静态工厂方法,还需要有set方法。

 

3.构造方法注入还是setter注入?

 

一般推荐是使用setter注入,因为当使用构造方法注入的时候,如果构造方法的参数太多,就会造成代码的可读性差,而且要为每个参数赋值。当某些属性可选的时候,选择setter注入是一种很好的选择。

  • depends-on和继承

当配置存在重复的时候,就可以定义一个bean为抽象(abstract),另外一个bean继承该bean(parent),来使用重复的配置。

而当一个bean实例化之前,需要在一个或者多个bean实例化之后,就可以用depends-on属性来指定需要预先实例化的那些bean。

 

  •  Lazy-initialized beans

ApplicationContext实现的默认行为就是在启动时将所有singleton bean提前进行实例化。有时候这种默认处理可能并不是你想要的。在XML配置文件中,延迟初始化将通过<bean/>元素中的lazy-init属性来进行控制。在容器层次上通过在<beans/>元素上使用default-lazy-init属性来控制延迟初始化也是可能的。

 

  • 自动装配

自动装配的方便之处在减少或者消除属性或构造器参数的设置。主要是有byName,byType,constructor,autodetect。

 

 

猜你喜欢

转载自endless.iteye.com/blog/1768915
今日推荐