spring5新特性

1. Spring5.0在2017年9月发布了GA(通用)版本,基于JDK8,兼容JDK9,但JDK8以下版本无法使用;
    1. Tomcat版本要求最低8.5,使用JDK8构建工程,可以降版编译,但不能使用JDK8-构建工程;
    2. 随着JDK和Tomcat的更新,相应的IDE也要更新.
2. JDK8的更新
    1. 反射增强:大量创建对象、给对象的属性设置值、反射创建对象...的速度都大大加快;
    2. @NotNull、@Nullable
        1. 显示表明可为空的参数/返回值,实现在编译期处理空值,避免在运行期抛出Null异常;
    3. 日志记录
        1. Spring5.0新增Commons Logging桥接模块的封装,称为spring-jcl,并不是标准的CL;
        2. 当然,无需任何额外的桥接,新版本也会对Log4j2.x、SLF4J、JUL进行自动检测.
3. 核心容器的更新
    1. Spring5.0支持候选组件索引作为类路径扫描的替代方法;
    2. 从索引读取实体而不是扫描类路径,对小于200个类的小型项目没有明显差异,但对大型项目影响较大;
    3. 加载组建索引的耗费是廉价的,所以随着类的数量增长,启动时间仍可以维持一个常数;
    4. 对于Spring项目的开发者而言,应用程序的启动时间将被大大缩减.
4. 支持Kotlin:一种支持函数式编程的面向对象语言,运行在JVM之上,但运行环境又不仅限于JVM;
5. 响应式编程风格
    1. spring-webflux:支持响应式HTTP和WebSocket客户端;
    2. spring-webflux中包含两种独立的服务端编程模型;
        1. 基于注解:使用 @Controller 以及 SpringMVC的一些注解;
        2. 使用Java8 lambda表达式的函数式风格的路由和处理.
6. 支持JUnit5:JUnit5 = JUnit Platform + JUnit Jupiter + JUnit Vintage
7. 依赖类库的更新
    1. 不再支持的类库:Portlet、Velocity、JasperReports、XMLBeans、JDO、Guava
    2. 新支持的类库:Jackson2.6+、EhCache2.1+/3.0GA、Hibernate5.0+、JDBC4.0+、XmlUnit2.x+、
    OkHttp3.x+、Netty4.1+