前瞻:Spring 6.0将停止支持Freemarker和JSP!

我是程序汪

共 2491字,需浏览 5分钟

 ·

2022-01-17 06:48

Spring Framework 6.0 第一个里程碑版本已经发布,目前已经可以从Spring Repo获取。这里有一些新变更我们可以提前了解一下。

Java EE迁移

甲骨文已经把Java EE捐献给Eclipse基金会数年了。Java EE的名称也变更为了Jarkarta EE,包名也相应地从javax变更为jakarta。例如javax.persistence现在对应为jakarta.persistence

核心容器

在本次里程碑版本中涉及到的两个核心容器规范JSR-250JSR-330的包名都会迁移到Jakarta EE

持久层

Jakarta EE的持久层规范也将在此次里程碑版本中完成迁移。这意味着javax.persistencejakarta.validation都将实装。对应  Hibernate ORM 5.6.x 和  Hibernate Validator  7.0.x  。

Web 应用

Servlet中间件基准线

由于Jakarta EE的合并迁移,Servlet中间件也要进行升级。Tomcat 10, Jetty 11, 或者基于undertow-servlet-jakartaUndertow 2.2.14  是目前里程碑版本的基准线。

进一步移除过时API

一些过时的基于Servlet的组件已经在本次里程碑版本中移除。

  • Commons FileUpload 上传组件已经被移除。

  • 相关的前后端模板Tiles布局组件例如FreeMarkerJSP停止了支持。现在Spring将精力放在了基于RestfulWeb架构。

Controller扫描机制变动

现在Spring MVCSpring WebFlux将不再将类上单独有@RequestMappingSpring Bean视为控制器。在6.0之前默认情况以下代码是可以的:

/**
 * 6.0之前
 * @author felord.cn
 */

@Component
@RequestMapping("/foo")
public class FooController {

    @GetMapping("/hello")
    public Map hello() {
        return Collections.singletonMap("hello""world");
    }

}

6.0之前相关基于AOP的代理机制将失效, 请为此类控制器启用基于类的代理 。

6.0之后默认情况下必须有@Controller@RestController注解才可以被视为控制器。

HttpMethod

请求方法HttpMethod6.0之前为Java枚举。

/**
 *  6.0 之前
 *
 * @since 3.0
 */

public enum HttpMethod {

 GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE;

 private static final Map mappings = new HashMap<>(16);

 static {
  for (HttpMethod httpMethod : values()) {
   mappings.put(httpMethod.name(), httpMethod);
  }
 }

 @Nullable
 public static HttpMethod resolve(@Nullable String method) {
  return (method != null ? mappings.get(method) : null);
 }
    
 public boolean matches(String method) {
  return name().equals(method);
 }

}

6.0以后改为Java类:

public final class HttpMethod implements Comparable<HttpMethod>, Serializable {

 private static final long serialVersionUID = -70133475680645360L;

 private static final HttpMethod[] values;

 private static final Map mappings = new HashMap<>(16);
 
 public static final HttpMethod GET = new HttpMethod("GET");
 
 public static final HttpMethod HEAD = new HttpMethod("HEAD");
 
 public static final HttpMethod POST = new HttpMethod("POST");
 
 public static final HttpMethod PUT = new HttpMethod("PUT");
   // 其它省略
}

其它前沿

在2022年的1月份Spring Framework 6.0的第二个里程碑和对应的Spring Boot 3.0第一个里程碑将和大家见面。

程序汪资料链接

程序汪接的7个私活都在这里,经验整理

Java项目分享  最新整理全集,找项目不累啦 04版

堪称神级的Spring Boot手册,从基础入门到实战进阶

卧槽!字节跳动《算法中文手册》火了,完整版 PDF 开放下载!

卧槽!阿里大佬总结的《图解Java》火了,完整版PDF开放下载!

字节跳动总结的设计模式 PDF 火了,完整版开放下载!

欢迎添加程序汪个人微信 itwang008  进粉丝群或围观朋友圈

浏览 33
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报