From 5a3885a34f33fc4dd08913562d21dc892de22178 Mon Sep 17 00:00:00 2001 From: qibaoguang Date: Tue, 10 Feb 2015 23:48:07 +0800 Subject: [PATCH] Update 26.2. JAX-RS and Jersey.md --- .../26.2. JAX-RS and Jersey.md | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/IV. Spring Boot features/26.2. JAX-RS and Jersey.md b/IV. Spring Boot features/26.2. JAX-RS and Jersey.md index e69de29..5fad0af 100644 --- a/IV. Spring Boot features/26.2. JAX-RS and Jersey.md +++ b/IV. Spring Boot features/26.2. JAX-RS and Jersey.md @@ -0,0 +1,29 @@ +### 26.2. JAX-RS和Jersey + +如果喜欢JAX-RS为REST端点提供的编程模型,你可以使用可用的实现替代Spring MVC。如果在你的应用上下文中将Jersey 1.x和Apache Celtix的Servlet或Filter注册为一个@Bean,那它们工作的相当好。Jersey 2.x有一些原生的Spring支持,所以我们会在Spring Boot为它提供自动配置支持,连同一个启动器(starter)。 + +想要开始使用Jersey 2.x只需要加入spring-boot-starter-jersey依赖,然后你需要一个ResourceConfig类型的@Bean,用于注册所有的端点(endpoints)。 +```java +@Component +public class JerseyConfig extends ResourceConfig { + public JerseyConfig() { + register(Endpoint.class); + } +} +``` +所有注册的端点都应该被@Components和HTTP资源annotations(比如@GET)注解。 +```java +@Component +@Path("/hello") +public class Endpoint { + @GET + public String message() { + return "Hello"; + } +} +``` +由于Endpoint是一个Spring组件(@Component),所以它的生命周期受Spring管理,并且你可以使用@Autowired添加依赖及使用@Value注入外部配置。Jersey servlet将被注册,并默认映射到/*。你可以将@ApplicationPath添加到ResourceConfig来改变该映射。 + +默认情况下,Jersey将在一个ServletRegistrationBean类型的@Bean中被设置成名称为jerseyServletRegistration的Servlet。通过创建自己的相同名称的bean,你可以禁止或覆盖这个bean。你也可以通过设置`spring.jersey.type=filter`来使用一个Filter代替Servlet(在这种情况下,被覆盖或替换的@Bean是jerseyFilterRegistration)。该servlet有@Order属性,你可以通过`spring.jersey.filter.order`进行设置。不管是Servlet还是Filter注册都可以使用spring.jersey.init.*定义一个属性集合作为初始化参数传递过去。 + +这里有一个[Jersey示例](http://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-jersey),你可以查看如何设置相关事项。