1. Spring概述
1.1 什么是框架?
框架(Framework):框(指其约束性)架(指其支撑性),在软件设计中指为解决一个开放性问题而设计的具有一定约束性的支撑结构。在此结构上可以根据具体问题扩展、安插更多的组成部分,从而更迅速和方便地构建完整的解决问题的方案。
- 框架本身一般不完整到可以解决特定问题
- 框架天生就是为扩展而设计的
- 框架里面可以为后续扩展的组件提供很多辅助性、支撑性的方便易用的实用工具(utilities),
也就是说框架时常配套了一些帮助解决某类问题的库(libraries)或工具(tools)。
如何学习框架呢?
- 知道框架能做什么
- 学习框架的语法,一般框架完成一个功能需要一定的步骤
- 框架的内部实现原理(扩展)
- 尝试实现一个框架(提升)
1.2 Spring是什么
官方文档:https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#spring-core
Spring 被称为 J2EE 的春天,是一个是分层的 Java SE/ EE full-stack 开源的轻量级的 Java 开发框架, 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。
Spring具有控制反转(IoC)和面向切面(AOP)两大核心。Java Spring 框架通过声明式方式灵活地进行事务的管理,提高开发效率和质量。
Spring 框架不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring 中受益。Spring 框架还是一个超级粘合平台,除了自己提供功能外,还提供粘合其他技术和框架的能力。
1.3 Spring的优势
1、方便解耦,简化开发
Spring 就是一个大工厂,可以将所有对象的创建和依赖关系的维护交给 Spring 管理。
2、方便集成各种优秀框架
Spring 不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如 Struts 2、Hibernate、
MyBatis 等)的直接支持。
3、降低 Java EE API 的使用难度
Spring 对 Java EE 开发中非常难用的一些 API(JDBC、JavaMail、远程调用等)都提供了封装,
使这些 API 应用的难度大大降低。
4、方便程序的测试
Spring 支持 JUnit4,可以通过注解方便地测试 Spring 程序。
5、AOP 编程的支持
Spring 提供面向切面编程,可以方便地实现对程序进行权限拦截和运行监控等功能。
6、声明式事务的支持
只需要通过配置就可以完成对事务的管理,而无须手动编程。
1.4 Spring的体系结构
Spring 为我们提供了一站式解决方案,但Spring 是模块化的,允许咱们挑选和选择适用于项目的模块,不需要把剩余部分也引入。
Spring 框架提供约 20 个模块,可以根据应用程序的要求来选择。