为什么 Spring 框架如此流行?
作者: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-
近期热文:
关注点分离之RestTemplate的错误处理
分享几个 SpringBoot 实用的小技巧
Swagger中配置了@ApiModelProperty的allowableValues属性但不显示的问题
为什么Kafka中的分区数只能增加不能减少?
一文带你吃透线程池
设计一个百万级的消息推送系统
Hmily:高性能异步分布式事务TCC框架
并行化:你的高并发大杀器
关注我
点击“阅读原文”,看本号其他精彩内容