Spring的IOC有几种方式?它们之间的差别是什么,应该选择Annonation还是应该选择XML?

分享人:王汇通

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

9.鸣谢

1.背景介绍

什么是Spring?

Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

Spring的开发策略

一丶基于POJO类的轻量级和最小侵入性编程

二丶通过依赖注入和面向接口实现耦合

三丶基于切面和惯例进行声明式编程

四丶通过切面和模板减少样板式代码

Spring的优点

一丶低侵入设计,独立性强

二丶兼容性强,能融合各种框架模块

三丶开发效率高,易于维护,易于测试,等等

Spring的核心

IOC: Inversion of Control (控制反转) : 就是把要在程序中实例化的对象配置到文件中,在程序中不用new来产生,而是让容器通过配置文件返回一个给你,好处就是当需要更改业务逻辑时,方便替换对接口的不同实现类。

AOP: Aspect Oriented Programming (面向切面编程) 用来在系统中提升业务的分离,把日志、安全、事务等东西和核心业务分离开,甚至核心业务都不知道它们的存在。基本实现就是对相关的方法进行拦截,添加所需的处理动作。

2.知识剖析

IOC是什么

 IOC—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。 在java开发中,IOC意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。

IOC的底层实现原理所用的技术

一丶工厂设计模式

二丶xml配置文件

三丶dom4j解析xml文件

四丶采用反射设计模式创建对象

属性注入的三种方法

一丶set方法注入

二丶有参构造方法注入

三丶接口注入

3.常见问题

一丶谁控制谁?控制什么

二丶为何是反转,哪些方面反转了:

三丶依赖注入,谁依赖谁,注入了什么?

4.解决方案

Spring IOC常见问题解决

一丶IOC是有专门一个容器来创建这些对象,即由IOC容器来控制对象的创建;谁控制谁?当然是IOC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。

二丶传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。

三丶它把传统上由程序代码直接操控的对象的调用权交给容器,某个对象所需要的外部资源(包括对象、资源、常量数据)。

5.编码实战

6.扩展思考

在SpringMVC项目中,Spring创建的容器与SpringMVC创建的容器有什么关系?它们分别负责哪些bean的注册?

7.参考文献

参考一:百度

参开二:简书

参考三:知乎

8.更多讨论

9.鸣谢

感谢观看,如有出错,恳请指正