什么是Spring

Spring是分层的full-stack轻量级Java开源框架,其中以AOP和IOC为内核,提供了展现层Spring MVC的业务层事务管理等众多的企业级应用技术,还整合了多方第三方开源框架和类库。

优点
方便解耦;
AOP编程支持;
声明式事务;
方便程序测试;
方便集成各种优秀框架;
降低API的使用难度;

什么是AOP和IOC

AOP被称为面向切面编程全程(Aspect oriented programming)
AOP是OOP的延续,OOP思想是一种垂直纵向的继承体系。在多个纵向(顺序)流程中出现的相同子流程代码,称之为横切逻辑代码,主要的横切逻辑代码使用场景有:事务控制,权限校验,打印日志。
横切逻辑代码中存在的问题:
1.代码重复问题;
2.代码臃肿不堪,维护麻烦问题;
AOP则可以解决这些代码耦合问题,从根本上解耦。

为什么叫面向切面编程:
切:指的是横切逻辑,原有业务逻辑代码不能轻易修改移动,只作横切逻辑代码,所以面向切面逻辑;
面:横切逻辑代码往往影响很多个方法,每一个方法如同一个点,多个点构成面,面的概念即是如此;

IOC控制反转(Inversion of control),其中描述的事情就是Java开发领域中对象的创建,管理的问题。
控制:对象的创建(实例化,管理)的权利;
反转:控制权交给了外部环境(spring框架,IOC容器);
IOC思想下的开发方式,不需要自己去new对象,而是IOC容器去帮助我们去实例化对象并且去管理这些对象,我们需要对象的时候管IOC容器要即可;

DI 依赖注入(Dependancy Injection)IOC是概念,那么依赖注入就是手段,IOC站在对象的角度,对象实例化及其管理权力交给了容器,DI是站在容器的角度,容器会把对象依赖的其他对象注入;