简单了解春天Framework5.0新特性

  

SpringFramework5.0是自2013年12月版本4发布之后SpringFramework的第一个主发行版.SpringFramework项目的领导人JuergenHoeller于2016年7月28日宣布了第一个SpringFramework5.0里程碑版本(5.0 m1)。

  

现在,将近一年的时间过去以后,我们期盼已久的RC3版本将于2017年7月18日发行。这是路线图规划中SpringFramework5.0首个GA发行版的最后一次发行。

  

<强>从高层来看,SpringFramework5.0的功能可以分为:

  

JDK基线更新

  

核心框架修正

  

核心容器更新

  

含芬兰湾的科特林在内的函数式编程

  

响应式编程模型

  

测试改进

  

库支持   

中止支持

  

SpringFramework5.0的JDK基线更新

  

整个Springframework5.0代码库运行于Java8之上。因此Springframework5.0对环境的最低要就就是Java8。

  

这一点实际上对框架而言非常重要。而作为开发者的我们而言,则已经能够去藉此来享受到现代Java发行版中的所有新特性了。而框架版本还背负这支持已经不被建议使用的Java发行版的任务。

  

现在,框架的最低要求是Java8。

  

SpringFramework5.0原来是计划在Java9之上发行的。然后,在基于Java9的发行版运作了超过18个月之后,春天的团队决定将SpringFramework5.0发行版同Java9的绑定关系解除。

  

不过,在Java9发布的时候(计划是2017年9月份),SpringFramework5.0会准备好的。

  

  

核心的SpringFramework5.0已经利用Java8所引入的新特性进行了修订。比较关键的一些如下:

  

基于Java8的反射增强,SpringFramework5.0中的方法参数可以更加高效的进行访问。

  

核心的春天接口现在提供基于Java8的默认方法构建的选择性声明。

  

用@Nullable和@NotNull注解来显示表明可为空的参数和以及返回值。这样就够在编译的时候处理空值而不是在运行时抛出nullpointerexception。

  

在日志记录方面,SpringFramework5.0带来了CommonsLogging桥接模块的封装,它被叫做spring-jcl而不是标准的CommonsLogging。当然,无需任何额外的桥接,新版本也会对Log4j2.x, SLF4J, 7月(之后)进行自动检测。

  

有了资源抽象所提供的isFile指示器以及getFile方法,防御式编程方法也得到了框架的推动。

  

  

SpringFramework5.0现在支持候选组件索引作为类路径扫描的替代方案。该功能已经在类路径扫描器中添加,以简化添加候选组件标识的步骤。

  

应用程序构建任务可以定义当前项目自己的meta - inf/spring.components文件。在编译时,源模型是自包含的,JPA实体和弹簧组件是已被标记的。

  

从索引读取实体而不是扫描类路径对于小于200个类的小型项目是没有明显差异。但对大型项目影响较大。加载组件索引开销更低,因此,随着类数的增加,索引读取的启动时间将保持不变。

  

加载组件索引的耗费是廉价的。因此当类的数量不断增长,加上构建索引的启动时间仍然可以维持一个常数,不过对于组件扫描而言,启动时间则会有明显的增长。

  

这个对于我们处于大型弹簧项目的开发者所意味着的,是应用程序的启动时间将被大大缩减。虽然20或30秒者钟看似没什么,但如果每天要这样登上好几百次,加起来就够你受的了。使用了组件索引的话,就能帮助你每天过的更加高效。

  

你可以在春天的Jira上了解更多关于组件索引的相关信息。

  

@Nullable注解现在也可以被用来作为可选注入项的指示器.@Nullable为对象使用方规定了一项义务,就是它们必须准备以为取值为零的值。在此次发布之前,实现这件事情的唯一方法就是通过安卓的Nullable CheckerFramework的可空,以及JSR305的Nullable。

  

发行说明中的其他一些新功能和增强功能包括:

  

在GenericApplicationContext和所中实现函数式编程风格。

  

对接口方法的事务,缓存和异步注释的一致性检测。

  

将XML配置命名空间简化为无版本化的模式。

  

  

SpringFramework5.0引入了对JetBrainsKotlin语言的支持.Kotlin是一种支持函数式编程编程风格的面向对象语言.Kotlin运行之在JVM上,但运行环境并不限于JVM。

  

有了对芬兰湾的科特林的支持,开发者可以进行深度的函数式弹簧编程,特别是在函数式Web端点以及豆注册这些方面。

  

在SpringFramework5.0中,你可以为WEB的函数式API编写干净且地道的芬兰湾的科特林代码,就像下面这样:

简单了解春天Framework5.0新特性