介绍
本来是有应用程序管理的对象之间的依赖关系,现在交给了容器管理,这就叫控制反转,即交给了IoC容器,Spring的IoC容器主要使用DI方式实现的。不需要主动查找,对象的查找定位、和创建全部由容器管理。
1、大量减少了Factory和Singleton的数量,使代码层次更加清晰,主要原因是我们不在查找定位创建和管理对象之间的依赖关系了,都交给了IoC容器管理了
2、Spring的IoC容器是一个轻量级的容器,没有侵入性,不需要依赖容器的API,也不需要实现一些特殊接口
3、一个合理的设计最好尽量避免侵入性
4、是框架更好的工作
5、提供了AOP声明式服务能力,可以针对POJO对象提供声明式服务能力,如:声明式事务
6、对于资源,如hibernate Session 或 JDBC Connection我们不在负责开启和关闭
7、鼓励我们面向接口编程
8、减少了代码中的耦合(解耦合),将耦合推迟到了配置文件中,发生了变化更容易控制
应用
1、常见属性的注入:int,String,list,set,map的注入
2、什么是属性编辑器和作用?
将spring配置文件中的字符串转换成相应的java对象
spring内置了一些属性编辑器,也可以自定义属性编辑器
3、如何自定义属性编辑器?
继承PropertyEditorSupport
覆盖setAsText()方法
将自定义的属性编辑器注入到spring中
4、了解关于多配置文件的读取方式
可以采用数组
可以采用*匹配模式
5、如何减少spring的配置文件
通过标签将公共的配置提取出来,然后指定标签中的abstract属性为true
在其他标签中指定其parent即可
参见:applicationContext-common.xml
6、spring默认在创建BeanFactory时,将配置文件中所有的对象实例化并进行注入
但可以采用相关的属性延迟配置文件的初始化,如:default-lazy-init=”true”