配置扫描类
import org.glassfish.jersey.server.ResourceConfig;
import org.springframework.context.annotation.Configuration;
@Configuration
public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
// 设置要扫描的包路径,Jersey 会自动扫描该包及其子包下的资源类和提供器
packages("com.example.demo.resource");
}
}
或者下面这个
@Component
public class JerseyConfig extends ResourceConfig {
public JerseyConfig(@Value("${jersey.scan.packages}") String scanPackages) {
// 使用 application.properties 中配置的包路径
packages(scanPackages);
// 如果需要注册其他资源类或提供程序,可以在这里添加
// 这里加入拦截器
register(RestRequestFilter.class);
register(RestResponseFilter.class);
}
}
加入Rest 拦截器
@Provider
@Slf4j
public class RestRequestFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) {
UriInfo uriInfo = requestContext.getUriInfo();
log.info("Rest Filter Url:{}",uriInfo.getAbsolutePath());
}
}
@Provider
public class RestResponseFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext,
ContainerResponseContext responseContext) {
responseContext.getHeaders().add("Access-Control-Allow-Origin", "*");
responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
responseContext.getHeaders().add("Access-Control-Allow-Headers", "Content-Type, Authorization");
}
}
POM 配置
<dependencies>
<!-- Spring Boot Starter Jersey -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
# 如果 要用 jetty 需要加入 排除
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>