JAX-RS - Spring 启动与不启动 Spring 启动
JAX-RS - Spring Boot vs without Spring Boot
我想使用 Spring 引导和 JAX-RS(Jersey 实现)。如果我们不使用 Spring Boot,我们可以使用以下代码来注册所有 Rest 服务 类
@ApplicationPath("/myrest")
public class MyApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> s = new HashSet<Class<?>>();
s.add(HelloWorld.class);
return s;
}
}
这在支持 Servlet 3.0 的容器中工作正常。
但是当我们使用 Spring Boot with JAX-RS(Jersey) 为什么我们必须从 org.glassfish.jersey.server.ResourceConfig
扩展 为什么从 javax.ws.rs.core.Application
扩展不起作用?
But when we use Spring Boot with JAX-RS(Jersey) why do we have to extend from org.glassfish.jersey.server.ResourceConfig
Why extending from javax.ws.rs.core.Application
doesn't work?
因为 Spring Boot 使用 ResourceConfig
类型作为它注入到其自动配置器中的服务,即 JerseyAutoConfiguration
。如果你查看源代码,你会看到
@Autowired
private ResourceConfig config;
从那里,Sprig Boot 使用该实例配置应用程序。如果 ResourceConfig
bean 在 Spring 上下文中不可用,则不会发生自动配置。
我想使用 Spring 引导和 JAX-RS(Jersey 实现)。如果我们不使用 Spring Boot,我们可以使用以下代码来注册所有 Rest 服务 类
@ApplicationPath("/myrest")
public class MyApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> s = new HashSet<Class<?>>();
s.add(HelloWorld.class);
return s;
}
}
这在支持 Servlet 3.0 的容器中工作正常。
但是当我们使用 Spring Boot with JAX-RS(Jersey) 为什么我们必须从 org.glassfish.jersey.server.ResourceConfig
扩展 为什么从 javax.ws.rs.core.Application
扩展不起作用?
But when we use Spring Boot with JAX-RS(Jersey) why do we have to extend from
org.glassfish.jersey.server.ResourceConfig
Why extending fromjavax.ws.rs.core.Application
doesn't work?
因为 Spring Boot 使用 ResourceConfig
类型作为它注入到其自动配置器中的服务,即 JerseyAutoConfiguration
。如果你查看源代码,你会看到
@Autowired
private ResourceConfig config;
从那里,Sprig Boot 使用该实例配置应用程序。如果 ResourceConfig
bean 在 Spring 上下文中不可用,则不会发生自动配置。