Spring 是一种轻量级开发框架,提高开发人员的开发效率以及系统的可维护性。
Spring框架指的是Spring Framework,它是很多模块的集合,使用这些模块可以方便的协助我们进行开发。
Spring框架的好处:
1、轻量级:Spring框架最基础的版本大约2MB。
2、控制反转(IOC):通过控制反转实现解耦合。对象给出他们的依赖,而不是创建或查找依赖的对象。
3、面向切面(AOP):Spring支持面向切面的编程,并将应用程序业务逻辑与系统分离。
4、容器:Spring包含并管理对象的生命周期和配置。
5、事务管理:Spring提供了一个一致性的事物管理接口,可以收缩到本地事物,也可以扩展到全局事物。
6、异常处理:Spring提供了方便的API来将具体技术的异常转化成一致的异常。
Spring核心模块:
1、spring-core:Spring 基础api模块
2、spring-beans:Spring Bean相关,如依赖注入、依赖查找
3、spring-aop:Spring AOP处理
4、spring-context:事件驱动、注解驱动
5、spring-expression:Spring表达式语言模块
Spring框架的缺点:
1、使用了大量的反射机制、反射机制非常占用内存。
2、Spring里面包含很多其他组件,组件越多启动越慢。(重量级)
3、集成复杂:使用MyBatis时要配置很多还要使用注解。
4、配置复杂:XML进行配置。
5、构建和部署:启动Spring的IOC容器,是完全依赖于第三方web服务器。自身不能启动。
Spring中的两个重要特性:
Spring中的IOC和AOP
IOC:是一种思想,将原本的程序中的手动创建对象的控制权,交由Spring框架来管理。控制反转,使用依赖注入管理它们,将对象集中起来,配置对象,管理对象的整个生命周期。
AOP:AOP模块用于为支持Spring应用程序面向切面的开发。面向切面编程便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。
IOC的好处:
1、IOC最小化应用程序代码量。
2、它使测试应用程序变的容易,因为单元测试中不需要单例机制。
3、以最小的代价和最少的干扰来促进耦合。
4、IOC容器支持快速实例化和懒加载。
AOP的实现原理:
AOP就是基于动态代理的,如果要代理的对象实现某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用JDK Proxy去进行代理了,这时候Spring AOP会使用Cglib生成一个被代理对象的子类来作为代理。
依赖注入(DI):
构造器注入
setter注入
方法注入