标签:一站式 websocket 核心模块 nsa toc init dao tran 应用开发
1、Spring 介绍
在早期 J2EE 时代,开发一个应用程序非常繁琐,先不说对象的创建及管理,如其它数据库访问、提供 Web 服务等都需耗费我们大量时间。当时一位名为 Rod Johnson 的澳大利亚人率先对这种 J2EE 系统框架臃肿、低效的种种现状提出了质疑,之后 Rod Johnson 编写《Expert one on one J2EE design and development》一书,通过书中阐述的部分理念和原型创建了Spring Framework 。(PS:Rod Johnson 居然是音乐学博士???)
Spring Framework 是一个轻量级的 Java开源框架,主要是为了解决企业应用开发的复杂性而创建。它的核心是帮助我们管理对象及其依赖关系,但还提供像通用日志记录、性能统计、安全控制、异常处理等面向切面的能力,还集成了大量的第三方框架,如数据库访问框架 Hibernate ,mybatis、Web 服务框架 Struts 、自身提供的SpringMVC,还有任务调度、Redis 缓存,Mq等。
Spring Framework 还致力于 J2EE 应用的各层解决方案,在表现层、业务层及持久层都集成了相应的功能框架,可以说 Spring 是企业应用开发的“一站式”解决方案。
但其实 J2EE 和 Spring 并不对立,Spring 是 J2EE 的补充,它将 J2EE 的各个规范集成在一起:
可以说 Spring 是“借鉴了”他山之石,来逐步实现自身的生态系统。
2、Spring 框架的演变
Spring 第一个版本于2002年10月发布,至今十几年间, Spring 框架的核心功能、社区支持等各方面都发展迅猛,所以有必要回顾一下Spring 每个里程碑版本所带来的重要特性。
- Spring 0.9:这是该框架第一个公开发布的版本,以《Expert One-on-One: J2EE Design and Development》一书为基础,提供了 bean 配置基础、AOP 支持、JDBC 抽象框架、抽象事务支持等。该版本没有官方参考文档,但可以在SourceForge 上找到现有的源代码和文档。
- Spring 1.x:这是发布的第一个带有官方参考文档的版本。由七个模块组成。
- Spring Core、Spring Context、Spring DAO、Spring ORM、Spring AOP、Spring Web、Spring Web MVC
- Spring 2.x:该版本由六个模块组成,Spring Context 模块融入了 Spring Core 中,Spring Web MVC 融入了 Spring Web 中。
- 支持 AOP 开发的 @AspectJ 注解。
- 完全支持异步JMS 消息驱动的POJO。
- 为调度任务而引入的 TaskExecutor 抽象。
- Java 5 注解支持,特别是 @Transactional、@Required 和 @AspectJ。
- Spring 2.5.x:该版本包含以下功能。
- 新增 @Autowired 注解以及对 JSR-250 注解(@Resource、@PostConstruct 和 @PreDestroy)的支持。
- 新增注册 Bean 的相关注解:@Component、 @Repository、@Service 和 @Controller。
- 除了Spring MVC @Controller 注解,还添加了 @RequestMapping、@RequestParam 和@ModelAttribute 注解,从而支持通过注解配置进行请求处理。
- Spring 3.0.x:这是基于Java 5 的 Spring 第一个版本,旨在充分利用 Java5 的功能,如泛型、可变参数。
- 支持 Java5 功能,例如泛型、可变参数。
- 全面支持 REST。
- 新的 MVC XML 名称空间和其他注解,例如 SpringMVC 中的 @CookieValue 和 @RequessHeaders。
- 验证增强功能和 JSR-303 (Bean 验证)支持。
- Spring 3.2.x:该版本包含以下功能。
- 支持基于 Servlet 3.0 的异步请求处理。
- 新的 SpringMVC 注解 @ControllerAdvice。
- Spring 4.x:这是一个重要的 Spring 版本,也是第一个完全支持 Java 8 的版本。虽然仍然可以使用较旧的版本,但弃用的类和方法己被删除。
- 全面支持 Hibernate ORM 5.0 。
- JMS 和 Web 改进。
- 对 WebSocket 消息传递的改进。
- 引入了AopTestUtils 实用工具类,允许访问 Spring 代理的底层对象。
- Spring 5.x:这是一个主要版本,整个框架都基于Java 8。
- 充分利用Java 8 的强大功能,从而在性能上得到极大的改进。
- 支持 JMS2.0+ 和 JPA 2.1+。
- 引入了 Spring Web Flux,这是一个用于替代 SpringMVC 的项目,构建在反应式基础之上,完全是异步和非阻塞的。
- Web 和核心模块适用于反应式编程模型。
3、Spring 整体架构
到了 Spring 5.0 时代,其模块大约有 20 个,如图:
这些模块被总结为以下几部分。
Core Container
Core Container(核心容器)包含 Core 、Beans 、Context 和 Expression Language 四个模块。
- Core 模决主要包含 Spring 框架的核心工具类,是其他组件的基本核心。如动态代理相关的 asm、cglib,以及各种 Utils,StringUtils、CollectionUtils。
- Beans 模块包含访问配置文件、创建和管理 bean 以及进行 IoC/DI 操作相关的所有类。如:BeanFactory、BeanDefinitions 等。
- Context 模块构建于 Core 和Beans 模块基础之上,其继承了 Beans 的特性,为Spring 核心提供了大量扩展。ApplicationContext 接口是 Context 模块的核心。
- Expression Language 模块提供了强大的表达式语言。就是在远古 JSP 时期使用的 EL 表达式。
Data Access/Integration
Data Access/Integration 包含 JDBC 、ORM 、OXM、JMS 和 Transaction 模块。
- JDBC 模块提供了一个JDBC 抽象层,用来适配所有的数据库厂商。这个模块包含了 Spring 对 JDBC 数据访问进行封装的所有类。
- ORM 模块提供了几种常用的对象关系映射框架,如 JPA 、Hibernate 、iBatis 。
- OXM 模块提供了一个对ObjecνXML 映射实现的抽象层。
- JMS (Java Messaging Service)模块主要包含一些生产和消费消息的特性。
- Transaction 模块支持编程和声明性的事务管理。
Web
Web 层包含了Web 、Servlet 、WebSocket、Porlet 模块。
- Web 模块:提供了基础的面向Web 的集成特性。例如,多文件上传。
- Servlet 模块:该模块包含Spring 的model-view-controller (MVC)实现。
- WebSocket 模块:提供 WebSocket 协议支持。
- Porlet 模块:提供了用于 Portlet 环境和 Servlet 模块的 MVC 的实现
AOP
AOP 模块提供了一个符合 AOP 联盟标准的面向切面编程实现,它让你可以定义例如方法拦截器和切点,从而将逻辑代码分开,降低它们之间的耦合性。
- Aspects 模块提供了对AspectJ 的集成支持。
- Instrumentation 模块提供了class instrumentation 支持和classloader 实现,使得可以在特定的应用服务器上使用。
- Messaging 模块:对消息通信集成提供了广泛的支持,及提供简化 JMS API 的使用到异步接收消息的完整基础结构。
Test
Test 模块支持使用 JUnit 和TestNG 对 Spring 组件进行测试。
最后
Spring 背景及架构就介绍到这,接下来将对 Spring 核心容器、AOP、事务这三部分内容展开一系列的讨论。
注:该系列文章使用的 Spring 版本是 5.0+。
以上就是本章内容,如果文章中有错误或者需要补充的请及时提出,本人感激不尽。
参考:
《Spring 源码深度解析(第二版)》
《Spring5 高级编程》
《SpringBoot 编程思想》
https://baike.baidu.com/item/spring/85061#2
https://docs.spring.io/spring/docs/5.2.2.RELEASE/spring-framework-reference/overview.html#overview
Spring(一)开篇
标签:一站式 websocket 核心模块 nsa toc init dao tran 应用开发
原文地址:https://www.cnblogs.com/loongk/p/12194690.html