春季入门导读——国际奥委会和AOP

和MyBatis系列不同的是,在正式开始Spring入门时,我们先来了解两个关于Spring核心的概念,IoC(Inverse of Control)控制反转和AOP()面向切面编程。

1.IoC(Inversion of Control)控制反转

什么是控制反转呢?可以这么通俗的来解释,我们通常写代码当一个类会关联另一个类是会直接在这个类里new,例如:

Spring入门导读——IoC和AOP

 1 package day_30_spring; 2  3 /** 4  * @author 余林丰 5  * 6  * 2016年10月30日 7  */ 8 public class People { 9     private Eat eat;10     11     /**12      * 在构造方法中创建Eat的对象实例13      */14     public People(){15         eat = new Eat();16     }17     18 }

Spring入门导读——IoC和AOP

现在我们将对象的控制权“反转”,交由第三方容器进行管理,即交由Spring容器帮我们管理,使得我们不再People代码中与Eat对象紧耦合。在看下面的代码:

Spring入门导读——IoC和AOP

 1 package day_30_spring; 2  3 /** 4  * @author 余林丰 5  * 6  * 2016年10月30日 7  */ 8 public class People { 9     private Action eat;10     11     /**12      * 在构造方法中创建Eat的对象实例13      */14     public People(Action eat){15         this.eat = eat;16     }17     18 }

Spring入门导读——IoC和AOP

Eat类是继承至Action接口的,这实际上就是通过依赖注入(DI,Dependency Inversion)的方式来实现控制反转。通过构造方法来注入。不依赖于具体的Action接口实现,我们只需要传递一个Action接口类进去即可。相比于之前的“传统”代码紧紧的依赖Action的具体实现Eat类,这个代码实际上解了代码的耦合性。Spring有两种构造方式,一种就是我们上面说到的构造器注入,另一种就是set方法注入。所以,IoC的很简单,目的是解耦,手段是通过依赖注入。Spring容器帮我们解决了一切。

2.null

春季入门导读——国际奥委会和AOP