IOC(Inversion Control):其思想是反转资源获取的方向。传统的资源查找方式要求组件向容器发起者查找资源,作为回应,容器适时返回资源。而应用了IOC以后,则是容器主动将资源推送给它所管理的组件,组件所需要做的仅是选择一种合适的方式来接受资源。这种行为也被称为查找的被动形式。
DI(Dependency Injection)-IOC的另一种表述方法:即组件以一些预先定义好的方式(例如:setter 方法)接受来自如容器资源的注入。相对于IOC而言,这种表述更直接。
Spring IOC容器读取bean配置创建Bean实例之前,必须对他进行实例化,只有在容器实例化后才可以从IOC容器中获取Bean实例并使用。
Spring 提供了两种类型的IOC容器实现
+BeanFactory.IOC容器的基本实现
+Application Context提供了更多的高级特性,是BeanFactory的接口
+BeanFactory是Spring框架的基础设施,面向Spring本身;ApplicationContext面向使用Spring框架的开发者,几乎所有的应用场合都直接使用AplicationContext而非底层的BeanFactory
+无论使用何种方式,配置文件时相同
依赖注入的方式:
Spring支持3中依赖注入方式
+属性注入:即通过setter方法注入Bean的属性值或依赖的对象;属性注入使用<property>元素,使用name属性指定Bean的属性,value属性或<value>子节点指定属性值,属性注入是常用的注入方式
+构造器注入
+工厂方式注入(很少使用,不推荐)