JAX-RS提供REST服务

如果你更喜欢JAX-RS为REST端点提供的编程模型,你可以使用相应 的 实 现 代 替 Spring MVC 框 架 。 Spring Boot 支 持 Jersey1.x 和Jersey2.x,我们这里只介绍Spring Boot对Jersey2.x的支持。

首先,引入Spring Boot针对Jersey的starter包:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>

创建一个ResourceConfig类型的@Bean组件,用于注册所有的端点( Endpoint ) , 可 以 注 册 任 意 数 量 的 , 然 后 实 现ResourceConfigCustomizer的Bean来进一步自定义端点功能。

@Component
public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
register(Endpoint.class);
}
}

注 册 的 所 有 端 点 都 需 要 注 解 @Components 和 HTTP 资 源Annotations(比如@GET):

@Component
@Path( "/hello")
public class Endpoint {
@GET
public String message() {
return "Hello";
}
}

Endpoint是一个Spring组件(@Component),它的生命周期受Spring容器管理,你可以使用@Autowired添加依赖,也可以使用@Value注入外部配置。Jersey的Servlet会被注册,并默认映射到/*,你可以将@ApplicationPath添加到ResourceConfig来改变该映射。默认 情 况 下 , Jersey 将 以 Servlet 的 形 式 注 册 为 一 个ServletRegistrationBean类型的@Bean。通过创建相同Name的Bean组件 , 可 以 禁 用 或 覆 盖 框 架 默 认 产 生 的 Bean 。 设 置spring.jersey.type=filter可以使用Filter的形式代替Servlet,相应 的 @Bean 类 型 变 为 jerseyFilterRegistration , 该 Filter 有 一 个@Order属性,你可以通过
spring.jersey.filter.order设置。注册Servlet和Filter时都可以使用spring.jersey.init.*定义一个属性集合并传递给init参数。

本文给大家讲解的内容是REST服务集成,JAX-RS提供REST服务