Spring基本概念

Inversion of Control And Dependency Injection

IOC

IOC是一种设计的思想,在程序设计时并不直接在某个对象内部去new一个其他对象,而是使用一个IOC容器来创建这些对象。使用IOC容器来控制对象,主要控制外部资源的获取。

所谓inversion,指的就是由容器来帮忙创建及注入依赖对象。依赖对象的获取由主动变为被动,这是一个反转。应用被动的等待IOC容器来创建注入它所需要的资源。

DI

应用依赖于IOC容器。因为其需要IOC容器来提供外部资源。IOC将这些外部资源注入某个对象。

其实依赖注入只是一种装配对象的手段,设计的类结构才是基础,如果设计的类结构不支持依赖注入,Spring IoC容器也注入不了任何东西。

循环依赖

很显然,循环依赖是指的,当创建A时,需要B,就去创建B,创建B时发现需要A。此时就有问题了,因为A还没创建完成,然后就去新建一个A,这样就会陷入死循环。

Aspect Orient Programming 面向切面编程

http://jinnianshilongnian.iteye.com/blog/1418596

在进行OOP开发时,都是基于对组件(比如类)进行开发,然后对组件进行组合,OOP最大问题就是无法解耦组件进行开发,比如我们上边举例,而AOP就是为了克服这个问题而出现的,它来进行这种耦合的分离。AOP为开发者提供一种进行横切关注点。
(比如日志关注点横切了支付关注点) 分离并织入的机制,把横切关注点分离,然后通过某种技术织入到系统中,从而无耦合的完成了我们的功能。

关注点:可以认为是所关注的任何东西,比如上边的支付组件;
关注点分离:将问题细化从而单独部分,即可以理解为不可再分割的组件,如上边的日志组件和支付组件;
横切关注点:一个组件无法完成需要的功能,需要其他组件协作完成,如日志组件横切于支付组件;