支持的接口
Application
Configuration
Providers
MessageBodyReader
MessageBodyReader
MessageBodyWriter
ContextResolver
ExceptionMapper
Feature
DynamicFeature
ContainerRequestFilter
ContainerResponseFilter
ReaderInterceptor
WriterInterceptor
ParamConverterProvider
@Priority
@ConstrainedTo
@PreMatching
@NameBinding
- …
Note
上述接口的语义、功能与JAX-RS
标准中定义的相同。
使用方式
使用时将实现上述接口的实现类直接注入Spring
容器并加上指定注解(如果是Controller
方法需要加上@Path
,其他的扩展加上@Provider
)即可生效。
eg.
1.自定义Application
,@ApplicationPath("/abc")
为可选项
@ApplicationPath("/abc")
@Component
public class ApplicationImpl extends Application {
@Override
public Set<Class<?>> getClasses() {
return Collections.singleton(HelloWorldResource.class);
}
}
2.自定义Provider
@Component
@Provider
public class RequestFilterDemo implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext context) {
context.getHeaders().add("name", "value");
}
}
3.自定义Controller
@Component
@Path("/simple")
public class HelloWorldController {
@GET
public String index() {
return "Hello JAX-RS3.0";
}
}
Note
如果在非Spring环境下使用JAX-RS,则需要在应用初始化时将JAX-RS
接口的实现类添加到启动上下文,示例如下:
Restlight.forServer()
.daemon(false)
.deployments()
// 添加JAX-RS接口实现类
.addExtensions(xxxx)
.server()
.start();
}