IOC(控制反转:Inverse of Control)是Spring的内核,AOP,声明式事务等功能都建立在该功能之上,它涉及到代码解耦,设计模式,代码优化等问题的考虑。
控制反转即是某一接口的具体实现类的选择控制权从调用类中移除,转交给第三方裁决。
依赖注入DI(Dependency Injection): 将调用类对接口的实现类的依赖关系由第三方注入,以移除调用类对接口实现类的依赖
属性注入可以有选择地通过Setter方法完成调用类所需依赖的注入,更加灵活方便。
控制反转spring框架通过一个配置文件实现控制反转,在容器启动时根据配置文件的描述信息,自动实例化Bean并完成依赖关系的建立,从容器中即可返回准备就绪的Bean实例,以待以后使用。Spring之所以有这样的能力,主要归功于java语言本身的类反射功能,反射机制简单的说就是我们利用编程的方式实现类的实例化
控制反转-BeanFactory
Spring通过该配置文件描述Bean及Bean之间的依赖关系,在容器启动时实例化Bean并建立Bean之间的依赖关系。Spring的Ioc容器在完成这些底层工作的基础上,还提供了Bean实例缓存、生命周期管理、Bean实例代理、事件发布、资源装载等高级服务。
BeanFactory(Bean工厂)
是Spring框架最核心的接口它提供了高级Ioc的配置机制,使管理不同类型的java对象成为可能。
spring 的主要特性。
(1)降低组件之间的耦合度,实现软件各层之间的解耦。
(2)可以使用容器提供的众多服务,如:事务管理服务、消息服务、JMS 服务、持久化服务等等。
(3)容器提供单例模式支持,开发人员不再需要自己编写实现代码。
(4)容器提供了AOP 技术,利用它很容易实现如权限拦截,运行期监控等功能。
(5)容器提供的众多辅作类,使用这些类能够加快应用的开发,如:JdbcTemplate、HibernateTemplate.
(6)对主流的应用框架提供了集成支持。