1. Spring基本概念
大约 5 分钟
基本概念
Spring 框架为现代基于 Java 的企业应用程序提供了一个全面的编程和配置模型——在任何类型的部署平台上。Spring 使创建 Java 企业应用程序变得容易。它提供了在企业环境中采用 Java 语言所需的一切。目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开发。
优点
方便解耦,简化开发
Spring就是一个大工厂,可以将所有对象创建和依赖的关系维护,交给Spring管理。
AOP编程的支持
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。
声明式事务的支持
只需要通过配置就可以完成对事务的管理,而无需手动编程。
- 方便程序的测试
Spring对Junit4支持,可以通过注解方便的测试Spring程序。
方便集成各种优秀框架
Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架的直接支持
降低JavaEE API的使用难度
Spring对JavaEE开发中非常难用的一些API(JDBC、远程调用等),都提供了封装,使这些API应用难度大大降低。
Spring体系结构
Spring 框架中包含20+模块,上图大概分5大模块简单了解下。
- Core Container:包括 Core、Beans、Context、EL 模块
- AOP、Aspects : AOP支持
- Data Access/Intergration:该模块包括了 JDBC、ORM、OXM、JMS 和事务管理。
- Web:包含了 Web、Web-Servlet、Web-Struts、Web-Porlet
- Test:集成多种测试框架如Junit4/Junit5,方便测试Spring程序
模块 | 功能说明 |
---|---|
Core | 封装了框架依赖的最底层部分,包括资源访问、类型转换及一些常用工具类。 |
Beans | 提供了框架的基础部分,包括控制反转(IOC)和依赖注入(DI) |
Context | 以 Core 和 Beans 为基础,集成 Beans 模块功能并添加资源绑定、数据验证、国际化、Java EE 支持、容器生命周期、事件传播等。核心接口是 ApplicationContext。 |
EL | 提供强大的表达式语言支持,支持访问和修改属性值,方法调用,支持访问及修改数组、容器和索引器,命名变量,支持算数和逻辑运算,支持从 Spring 容器获取 Bean,它也支持列表投影、选择和一般的列表聚合等。 |
AOP | Spring AOP 模块提供了符合 AOP Alliance 规范的面向切面的编程(aspect-oriented programming)实现,提供比如日志记录、权限控制、性能统计等通用功能和业务逻辑分离的技术。 |
Aspects | 提供了对 AspectJ 的集成,AspectJ 提供了比 Spring ASP 更强大的功能。 |
Transactions | 该模块用于 Spring 管理事务,支持编程和声明性的事务管理。 |
JDBC | 提供了一个 JDBC 的样例模板,使用这些模板能消除传统冗长的 JDBC 编码还有必须的事务控制,而且能享受到 Spring 管理事务的好处。 |
ORM | 提供与流行的“对象-关系”映射框架的无缝集成,包括 Hibernate、JPA、MyBatis 等。而且可以使用 Spring 事务管理,无需额外控制事务。 |
OXM | 提供了一个对 Object/XML 映射实现,将 java 对象映射成 XML 数据,或者将 XML 数据映射成 java 对象,Object/XML 映射实现包括 JAXB、Castor、XMLBeans 和 XStream。 |
JMS | 用于 JMS(Java Messaging Service),提供一套“消息生产者、消息消费者”模板用于更加简单的使用 JMS。JMS 用于用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。 |
Web | 提供了基础的 Web 功能。例如多文件上传、集成 IoC 容器、远程过程访问(RMI、Hessian、Burlap)以及 Web Service 支持,并提供一个 RestTemplate 类来提供方便的 Restful services 访问。 |
Web-Servlet | 提供了一个 Spring MVC Web 框架实现 |
Web-Struts | 提供了与 Struts 无缝集成,Struts 1.x 和 Struts 2.x 都支持。 |
Test | 集成多种测试框架如Junit4/Junit5,方便测试Spring程序 |
为什么学Spring?
极大地简化开发过程
大量公司在使用
面试必备技能之一
现在Java岗位面试中,Spring必问,常见的问题: 谈谈Spring IOC的理解,原理与实现?描述一下bean的生命周期 ?
本系列包含哪些技术?
- Spring核心IoC容器的使用和原理,配合大量的案例
- Spring AOP详细使用和原理
- Spring 提供的事务
- Spring Web相关的
- Spring的各种集成功能如Task、Scheduling、Caching等
- ......
本系列适合哪些人?
- Spring新手:没有接触过Spring框架,正在入门。本系列可以带你快速入门。
- 想成为Spring高手的人:会简单使用Spring,Spring Boot ,但是知识体系不完整,停留在只知其然阶段。本系列带你全面夯实基础,达到知其然而知其所以然高度,成为Spring高手。
基本环境
- IDE: IDEA
- Maven: 3.5.6
- Spring版本: 5.2.19.RELEASE
总结
基本概念说明完毕,下一篇发车,长风破浪会有时,直挂云帆济沧海。