查看原文
其他

为什么 Spring 框架如此流行?

程序猿DD 2019-07-13

作者:shirehappy

来源:SpringForAll社区

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

1、Spring框架特性

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

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

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

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

  • 组件的查找问题。

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

2、Spring框架的更重要特性

i.轻量级

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

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

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

iii.事务管理

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

iv.容器

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

v.依赖注入

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

vi.与其他框架的整合

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

3、Spring 5.0 特性

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

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版本

5、结论

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

原文链接:https://dzone.com/articles/why-spring-framework-is-popular

作者:Rinu Gour

译者:shirehappy

-END-

 近期热文:

关注我

点击“阅读原文”,看本号其他精彩内容

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存