Spring 框架 4 支持 Java 8 语言和 API 功能。在本文中,我们将重点放在 Spring 4 支持新的 Java 8 的功能。最重要的是 Lambda 表达式,方法引用,JSR-310的日期和时间,和可重复注释。
Lambda 表达式
Spring 的代码库使用了 Java 8 大量的函数式接口,Lambda 表达式可以用来编写更干净和紧凑的代码。每当出现函数式接口的对象的预期时我们便可以提供一个 Lambda 表达式。让我们进一步继续之前首先学习函数式接口。
函数式接口
有单一抽象方法的接口被称为函数式接口。下面是 JDK 中函数式接口的一些例子:
Comparator 是仅具有一个抽象的非对象方法的函数。尽管声明了两个抽象方法,因为 equals
是对应于对象的公共方法所以从计数里排除了。其中有一个对象类方法且没有非对象方法的接口并不是函数式接口。
一个接口如果有一个抽象的非对象类方法并且扩展自具有唯一对象类方法的非函数式接口,则称为函数式接口。
Spring 框架的函数式接口的例子:
@FunctionalInterface
注解可以在接口声明的顶部声明中被使用,但这并不是必需的。此注解用于由编译器来检测该接口是不是有效的函数式接口。如果我们试图在接口里定义多个单一抽象方法,编译器将抛出一个错误。