Spring 6.0 将停止支持 Freemarker 和 JSP

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

Java EE迁移

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

核心容器

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

持久层

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

Web 应用

Servlet中间件基准线

由于Jakarta EE的服务器托管止支合并迁移,Servlet中间件也要进行升级。将停Tomcat 10,止支 Jetty 11, 或者基于undertow-servlet-jakarta 的 Undertow 2.2.14 是目前里程碑版本的基准线。

进一步移除过时API

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

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

相关的前后端模板Tiles布局组件例如FreeMarker、JSP停止了支持。现在Spring将精力放在了基于Restful的Web架构。云服务器提供商

Controller扫描机制变动

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

/**  * 6.0之前  * @author felord.cn  */ @Component @RequestMapping("/foo") public class FooController {      @GetMapping("/hello")     public Map<String, String> hello() {          return Collections.singletonMap("hello", "world");     } } 

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

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

HttpMethod

请求方法HttpMethod在6.0之前为Java枚举。

/**  *  6.0 之前  *  * @since 3.0  */ public enum HttpMethod {   GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE;  private static final Map<String, HttpMethod> 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<String, HttpMethod> 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第一个里程碑将和大家见面。

网站模板
滇ICP备2023000592号-31