spring是一个开源的一站式轻量级框架;他是为了简化企业级开发而生;解决了业务逻辑层和其他各层的耦合问题
其主要内容有IOC(控制反转)和AOP(面向切面);
特点:1.轻量级:它是非入侵式的,即基于spring开发的应用中的对象可以不依赖spring的api;
2.依赖注入:是控制反转资源获取的方向;
3.面向切面:横切关注点,将程序横向开发。
4.容器:spring相当于一个容器,它包含和管理应用对象的生命周期;
5.框架:他实现了使用简单组件配置组合成一个复杂应用,在spring中可以使用xml和注解方式组合这些对象;
6.一站式:在IOC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方库;
IOC:
控制反转;是一种设计思想,spring的核心;将对象的创建交给spring容器来完成;传统方式是我们通过new 类名()来创建对象,类与类之间耦合度较高;现在讲创建对象的权利交给IOC(spring)容器,在需要改对象时直接调用该对象即可,使对象与对象之间松散耦合,方便测试,利于功能复用;
主要是IOC控制对象的创建;控制的主要是外部资源获取;
DI:
依赖注入:.IOC的另一种表达方式;{当一个类A的内部需要另一个类对象B时,IOC容器会将B对象注入到A对象中,这个过程就叫依赖注入};
DI就是在指ioc容器内实现的将依赖对象注入的概念。而依赖注入这一概念的实现,必然也内涵着权力控制的条件,
AOP:
面向切面编程:是一种通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术;
主要是将业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
{例如你写了很多方法,需要在这些方法的开始和结尾部分打印日志,这时如果你在每个方法内部写上日志就比较复杂,程序就看着比较沉重;而面向切面就是将这些方法的主要内容作为一个切面,日志作为另一个切面;只需要在切面类上写上所需要匹配的类和方法就会在这些类和方法上执行自己定义的动作};