学完MyBatis后紧接着我们就一块学习Spring框架吧。
前言
Spring框架现在99%以上的公司都在使用,他是java开发程序员必备技能之一,是非常非常的重要因此一定要掌握
一、简说Spring?
Spring是简化java企业级开发的一个框架。简单来说使用它就是为了解决企业应用开发的复杂性。Spring中最重要的是三个核心概念分别是控制反转IOC、依赖注入DI、面向切面编程AOP因此要想学好Spring这三个概念一定要清除
二、控制反转(IOC)
了解控制反转之前我们首先知道一个名词叫:依赖
简单说一个对象完成某种操作需要另一个对象中的方法时,此时称之为这个对象依赖另一个对象,这两个对象有依赖关系。
java代码演示:
public class A {
public void method(){
System.out.println("A提供B所需要的功能");
}
}
public class B {
private A a;
public B(A a){
this.a = a;
}
public void show(){
a.method();
System.out.println("B获取A的功能后正常执行");
}
}
测试
public class C {
public static void main(String[] args) {
A a = new A();
B b = new B(a);
b.show();
}
}
输出结果:
//A提供B所需要的功能
//B获取A的功能后正常执行
此时这两个对象有依赖关系,但是试想一下如果这还有好多对象和它有依赖关系的话这样操作的话就需要在创建这个对象之前将它所有依赖的对象都传递给这个对象,那么此时的构造的方法是多么复杂……
IOC(Inversion of Control)控制反转
简单来说:控制反转就是采用“第三方”实现具有依赖关系的对象之间的解耦
以往多个对象之间有依赖关系的话,需要依赖的对象进行创建和组装,现在我们将它交给第三方容器,就像上边的大齿轮一样,通过大齿轮就可以使有依赖关系的对象具有依赖关系,并且将对象之间的的依赖关系降低到最低,实现解耦。现在对象的创建和组装交给了第三方容器这就是控制反转。
三、依赖注入(DI)
依赖注入(Dependency Injection)
依赖注入就是IOC容器在运行期间,动态的将依赖关系注入到对象之中。所以控制反转和依赖注入是从不同的角度描述的同一件事,就是指通过IOC容器,利用依赖关系注入的方式,实现对象之间的解耦。
上述例子中,如果使用依赖注入的话,当创建对象B时,发现B依赖与A.那么此时Spring容器就会在清单中找到A的定义,并将A创建之后注入B对象之中。
总结
IOC控制反转,是一种设计理念,将对象创建和组装的主动控制权利交给了spring容器去做,控制的动作被反转了,降低了系统的耦合度,利于系统维护和扩展,主要就是指需要使用的对象的组装控制权被反转了,之前是自己要做的,现在交给spring容器做了。
DI依赖注入,表示spring容器中创建对象时给其设置依赖对象的方式,通过某些注入方式可以让系统更灵活,比如自动注入等可以让系统变的很灵活,这个后面的文章会细说。