当前位置: 首页 > 科技观察

Spring6.0将停止支持Freemarker和JSP

时间:2023-03-21 00:06:42 科技观察

SpringFramework6.0的第一个里程碑版本已经发布,目前可以从SpringRepo获取。以下是一些我们可以提前了解的新变化。JavaEE迁移Oracle多年来一直向Eclipse基金会捐赠JavaEE。JavaEE的名称也更改为JakartaEE,包名也相应地从javax更改为jakarta。例如,javax.persistence现在映射到jakarta.persistence。本次核心容器里程碑版本涉及的两个核心容器规范JSR-250和JSR-330的包名将迁移至JakartaEE。持久层JakartaEE的持久层规范也将在这个里程碑版本中迁移。这意味着javax.persistence和jakarta.validation都将被实现。对应于HibernateORM5.6.x和HibernateValidator7.0.x。Web应用Servlet中间件基线由于JakartaEE的合并迁移,Servlet中间件也需要升级。Tomcat10、Jetty11或基于undertow-servlet-jakarta的Undertow2.2.14是当前里程碑版本的基准。进一步删除过时的API在此里程碑版本中删除了一些过时的基于Servlet的组件。CommonsFileUpload上传组件已被删除。FreeMarker、JSP等相关前后端模板Tiles布局组件已停止支持。现在Spring专注于基于Restful的Web架构。控制器扫描机制发生变化现在SpringMVC和SpringWebFlux将不再将类上带有@RequestMapping的SpringBeans视为控制器。以下代码在6.0之前默认可用:/***Before6.0*@authorfelord.cn*/@Component@RequestMapping("/foo")publicclassFooController{@GetMapping("/hello")publicMaphello(){returnCollections.singletonMap("hello","world");}}6.0之前相关的基于AOP的代理机制将失效。请为此类控制器启用基于类的代理。6.0以后,默认必须要有@Controller或者@RestController注解才算是controller。HttpMethod请求方法HttpMethod在6.0之前为Java枚举。/***6.0之前**@since3.0*/publicenumHttpMethod{GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS,TRACE;privatestaticfinalMapmappings=newHashMap<>(16);static{for(HttpMethodhttpMethod:values()){mappings.put(httpMethod.name(),httpMethod);}}@NullablepublicstaticHttpMethodresolve(@NullableStringmethod){return(method!=null?mappings.get(method):null);}publicbooleanmatches(Stringmethod){returnname().equals(method);}}在6.0以后改为Java类:publicfinalclassHttpMethodimplementsComparable,Serializable{privatestaticfinallongserialVersionUID=-70133475680645360L;privatestaticfinalHttpMethodStrating[]almaps;values;=newHashMap<>(16);publicstaticfinalHttpMethodGET=newHttpMethod("GET");publicstaticfinalHttpMethodHEAD=newHttpMethod("HEAD");publicstaticfinalHttpMethodPOST=newHttpMethod("POST");publicstaticfinalHttpMethodPUT=newHttpMethod("PUT");//其炊前沿在201月22日,SpringFramework6.0的第二个里程碑和对应的SpringBoot3.0的第一个里程碑将与大家见面