文档章节

为何Spring框架能这么流行?

java知识分子
 java知识分子
发布于 10/23 22:50
字数 1727
阅读 18
收藏 0

想要学习更多关于Spring框架在Java开发者中如此流行?看这篇文章可以学到更多!

file

Spring框架特性

Spring是用于应用开发中的一款强大,轻量级框架。更广泛地说,你可以认为Spring框架是一个定义良好的工具,它支持很多使用Java最为编程语言的web应用程序。

在IT行业中的框架没有出现之前,应用都是使用JEE标准在开发。通过这些标准,我们能部署一个应用到任何JEE应用服务上。但是,它有几个问题,包括:

  • 代码在应用的发展中变得非常复杂。

  • 系统的性能会受到应用复杂度的影响。

  • 组件的查找问题。

这些问题随着Spring框架的引入得以解决。Spring框架因为其模块化的特征在市场上脱颖而出。也就是说,它能被分成不同的模块,每个模块提供各自的功能。

Spring框架的更重要特性

i.轻量级

就其大小和功能而言,Spring框架是非常轻量级的。这是由于它的POJO实现,它并不强制要求它继承任何类或实现任何接口。

ii.面向切面的编程(AOP)

这是Spring框架中的一个重要部分,面向切面的编程用来将横切关注点(比如日志,安全等)从业务逻辑和应用中分离开来。在接下来的文章中,你将在这更详细的了解这一点。

iii.事务管理

这是用于统一多个事务管理API和协调Java对象的事务。而且,它不与J2EE环境绑定,并且和非容器环境一起使用。

iv.容器

Spring框架设计和管理应用程序对象的生命周期和配置

v.依赖注入

Spring框架的这个特性使得你可以开发松耦合的应用。因此,这些松耦合应用的单元测试变得非常容易。这也使得开发者可以根据自身的需要交换一些模块。

vi.与其他框架的整合

这个框架的一个优点是它并试图去解决已经解决的问题。它只是试图通过它的框架去整合它们,为更大问题提供了一个解决方案。比如,它可以包含IBATIS,Hibernate,Toplink等

Spring 5.0 特性

现在,自Rob Johnson在2003年引入Spring框架以来,主要的增强已经完成。在第一次版本发布后,已经发布了几个版本。截止目前,Spring5.x 版本已经上市。因此,让我们来看看Spring 5.0的主要升级特性和增强,Java 8是所有编码基础的最低要求,JDK 9在运行时的兼容性,以及构建和测试套件:

file

a.JDK8 + 9 和JAVA EE 7 基线

Spring框架的代码库是基于Java 8的代码级别。这个代码级别通过推断泛型提供了可读性,代码中直接提供了对Java 8的条件支持。现在,Spring模块和Servlet3.1,jMS 2.0,JPA2.1,和Bean validation1.1都需要Java EE 7 API级别。最近的服务,比如Jetty9.3+ ,Tomcat8.5+ 和WildFly10+,已经被添加到spring 5.0。在运行时也增加了对JDK 9的兼容性,以及构建和测试套装。

b.删除类,方法和包

从Spring模块中删除了包mock.staticmock,以及对AnnotationDrivenStaticEntityMockingControl的支持。最低的要求是Tiles3和Hibernate5,这意味着包web.view.tiles2和form.hibernate3/orm.hibernate4下降了。Spring5.0同时撤销了对Portlet,Velocity,XML Beans,Guava,JDO和JasperReports的支持。因此,如果需要上面组件,推荐使用Spring 4.3.x。对于Spring生态中常用的方法,许多这些废弃的方法和类已经被删除了。

c.核心容器增强

随着Spring5.0的引入,在核心容器中进行了重大升级。主要有:

i.JDK 8+的改进

  • 核心Spring框架接口中Java 8方法的一些声明。

  • 使用JDK 7中的标准字符集。

  • 使用Java 8的高效参数方法访问。

ii.JDK 9的准备工作

  • 使用修改后的异常处理,实现了构造函数初始化的一致性。

iii.XML 相关的升级

  • 非版本模式的XML命名空间简化。

  • 不支持废弃的特性和对最近XSD文件的解析。

  • 特定版本的声明继续支持,但是需要得到验证。

d.响应式编程模型

Spring框架的最新版本在响应式编程模型上有重大改变。一个主要的变化是Spring core data缓存的使用,以及编码器/×××抽象和Spring-web HTTP消息编×××实现(支持XML和JSON)。另外,新的WebClient和新的Spring Web Reactive模块引入了对使用Servlet3.1的@Controller模型以及非servlet运行时容器(例如Undertow)的反应支持。

e.一般Web改进

在web改进中,使用MediaTypeFactory提供了对媒体类型解析的统一支持。另外,Spring框架提供了对完整的Serverl3.1的支持,版本5中提供了对Protobuf3.0的支持。

f.测试改进

随着这个版本的引入,Spring框架的测试环境做了重大改变。

i.在Spring TestContext框架中完全支持Junit 5的Jupiter编程。

  • SpringExtension是Jupiter中几个API扩展的一个实现,它为TestContext框架的一个现有特性提供完整支持,支持使用@ExtendWith,SpringExtention.class。

  • @SpringJUintConfig,结合Jupiter中的@ExtendedWith和@ContextConfigurationfrom (一个TestContext框架)。

  • @SpringJunitWebConfig,一个声明结合了Jupiter中的@ExtendedWith和@ContextConfiguration和一个TestContext框架的@WebAppConfiguration.

ii.在springTestContext框架中使用TestNG和JUnit5通过SpringRunner引入了一个新的测试执行回调方法。

iii.XMLUnit支持升级到2.2版本

结论

因此,在这篇Spring框架的教程中,你已经看到了Spring框架的各种各样的特性。此外,在测试环境、web服务和与xml相关的代码的升级已经在添加到了自之前的Spring 4框架到最新的Spring 5.x框架特性中。同样,如果你有任何疑问,请在下面的评论部分留言!

给大家推荐一个程序员学习扣群:863621962。群里有分享的视频,还有思维导图
群公告有视频,都是干货的,你可以下载来看。主要分享分布式架构、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战学习架构师视频。

© 著作权归作者所有

共有 人打赏支持
java知识分子
粉丝 10
博文 59
码字总数 163079
作品 0
湘潭
高级程序员
私信 提问
Java笔记——看完这个,打通Spring难度系数

写在前面经过一段时间的整理,希望读者看完后对自己的知识点有所帮助。 写过java的都知道:所有的对象都必须创建;或者说:使用对象之前必须先创建。而使用ioc之后,你就可以不再手动创建对象...

简祥
09/14
0
0
【Spring学习笔记】--IOC学习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/YYZZHC999/article/details/82824751 spring ioc原理 Ioc—Inversion of Control,即“控制反转”,不是什么技...

Hepburn_Yang
09/23
0
0
Spring源码剖析开篇:Spring概述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/73033273 欢迎阅读完整的专栏博客内容:Spring源码解析 本文首发于我的个人公众号:...

你的猫大哥
2017/06/11
0
0
【第一章】 Spring概述 ——跟我学Spring3

1.1.1 Spring是什么 Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。应用程序是由一组相互协作的对象组成。...

君辰
2015/07/23
0
0
简述Spring Boot与Spring Cloud的关系

如下文章字数大约600字,阅读时间需要5分钟左右。 随着微服务架构的持续火热,以及对开发部署迭代需求越来越快速,现今,spring boot逐渐火热,越来越流行。 随着spring boot 流行的还有另外...

Java大蜗牛
08/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

用POLARDB构建客到智能餐饮系统实践

摘要: 在新零售成为大趋势的今天,餐饮行业也加入到这一浪潮之中。智能餐饮系统将帮助餐饮行业从多个维度提升自己的运营能力和收益,而打造智能餐饮系统SaaS化能力也成为了目前的一个热点。...

阿里云官方博客
43分钟前
3
0
aws S3 util demo

package com.example.demo;import com.amazonaws.AmazonClientException;import com.amazonaws.AmazonServiceException;import com.amazonaws.auth.BasicAWSCredentials;import co......

经常把天聊死的胖子
今天
5
0
linux下查看cpu、memo、io、swap性能数据脚本

直接贴脚本: 1、cpu #!/bin/bashCurrentDate=`date -d today '+%Y%m%d'`CurrentTime=`date -d today '+%Y%m%d%H%M'`mytext="$CurrentTime\t`top -b -n 1 | grep Cpu\(s\......

郑加威
今天
5
0
MySQL之——查询重复记录、删除重复记录方法大全

MySQL之——查询重复记录、删除重复记录方法大全

安小乐
今天
2
0
spring容器启动,停止,关闭事件监听-ApplicationEvent

ApplicationEvent ApplicationEvent相当于一个事件,所有自定义事件都需要继承这个抽象类。在Eclipse中Ctrl+Shift+H调用类的层次结构列表,可以看到如下 Application下抽象子类ApplicationCo...

tantexian
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部