欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > JAVA EE与Spring的关系

JAVA EE与Spring的关系

2025/1/19 1:17:46 来源:https://blog.csdn.net/qq_46135702/article/details/145188792  浏览:    关键词:JAVA EE与Spring的关系

最近在阅读一些从岁数很大却依然活跃在开源世界的项目,发现其开放接口采用JAVA EE(Jakarta EE)提供的标准用于构建 REST API,例如 @Path, @QueryParam, @PathParam, @GET, @Suspended 等。

而目前主流开发中利用Spring框架已是家常便饭,利用@RestController, @RequestMapping, @GetMapping, @RequestParam等注解便快速且简洁地构建REST API。

注意:

1、两者依赖注入的方式不同

  • Spring 中,你通常使用 @Autowired 或者构造函数注入(例如 @RequiredArgsConstructor,这是 Lombok 提供的注解)来实现依赖注入。
  • Jakarta EE 中,使用的是 @Inject 注解,类似于 Spring 的 @Autowired,但是它依赖的是 CDI (Contexts and Dependency Injection) 容器。比如,@Inject private RetrieveService service; 表示 CDI 容器会自动注入 RetrieveService 实例。

2、请求处理的方式区别

  • Spring 通过 @RestController 注解标记类,表示这个类是一个处理 REST 请求的控制器,并且 @GetMapping 等注解用于标记具体的 HTTP 方法。
  • Jakarta EE 中,使用的是 @Path 注解来定义 RESTful 路径,@GET 注解来标识一个 GET 请求处理方法。并且它支持一些高级特性,比如异步响应 @Suspended AsyncResponse ar

3、REST API 路由定义

  • Spring 中,通常使用 @RequestMapping 或者 @GetMapping 等注解来定义路由路径,并且通过 @RequestParam 来获取查询参数。
  • Jakarta EE 中,路由路径通过 @Path 注解定义,同时参数通过 @QueryParam, @PathParam 等注解来获取。它更接近 JAX-RS 标准。

4、异步处理

  • Jakarta EE 中,异步处理通常通过 @Suspended AsyncResponse 来实现,这使得服务器在处理请求时可以不阻塞,适用于高并发场景。
  • Spring 也有类似的异步处理机制,但它更常用的是 @Async 注解或者通过 DeferredResult 来实现。

代码示例

1、Spring 示例:

@RestController
@RequestMapping("/test")
public class MinicvTestController {private final IMinicvTestService minicvTestService;@GetMapping("/list")public TableDataInfo<MinicvTestVo> list(MinicvTestBo bo, PageQuery pageQuery) {return minicvTestService.queryPageList(bo, pageQuery);}
}

2、Jakarta EE 示例:

@RequestScoped
@Path("test/{xxx}/test")
public class TestURI {@Injectprivate RetrieveService service;@Contextprivate HttpServletRequest request;@PathParam("value")private String value;@QueryParam("contentType")private String contentType;@GETpublic void get(@Suspended AsyncResponse ar) {// 处理请求逻辑}
}

Java EE 与 Spring 之间的关系,到底该如何理解?icon-default.png?t=O83Ahttps://www.zhihu.com/question/272497911/answer/3626367890

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com