Spring 是什么?特性?有哪些模块?

Spring 是什么?特性?有哪些模块?
Spring是一个轻量级、非侵入式的控制反转(IoC)和面向切面(AOP)的框架。
在2003年,音乐家Rod Johnson决定开发一个轻量级的Java开发框架,Spring逐渐崛起并取代了传统的笨重的EJB。
如今,企业级开发的标配基本是Spring5 + Spring Boot 2 + JDK 8。
Spring具有以下特点:
- 支持IoC和DI
Spring的核心是一个大的工厂容器,它负责创建和管理对象以及它们之间的依赖关系。Spring工厂生成Bean并管理Bean的生命周期,实现了高内聚低耦合的设计理念。
- 支持AOP编程
Spring提供了面向切面编程的支持,可以方便地实现程序的权限拦截、运行监控等切面功能。
- 声明式事务支持
通过配置就能够管理事务,而不需要硬编码。以前需要重复编写的事务提交和回滚的JDBC代码现在可以省去了。
- 快速测试支持
Spring对JUnit提供了支持,可以使用注解快速进行Spring程序的测试。
- 快速集成功能
方便地集成各种优秀框架,Spring不排斥任何优秀的开源框架,它内部提供了直接支持各种优秀框架(如Struts、Hibernate、MyBatis、Quartz等)的功能。
- 复杂API模板封装
Spring对JavaEE开发中一些难以使用的API(如JDBC、JavaMail、远程调用等)进行了模板化封装,使应用程序的开发难度大大降低。