配置掃描類
import org.glassfish.jersey.server.ResourceConfig;
import org.springframework.context.annotation.Configuration;
@Configuration
public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
// 設(shè)置要掃描的包路徑,Jersey 會(huì)自動(dòng)掃描該包及其子包下的資源類和提供器
packages("com.example.demo.resource");
}
}
或者下面這個(gè)
@Component
public class JerseyConfig extends ResourceConfig {
public JerseyConfig(@Value("${jersey.scan.packages}") String scanPackages) {
// 使用 application.properties 中配置的包路徑
packages(scanPackages);
// 如果需要注冊(cè)其他資源類或提供程序,可以在這里添加
// 這里加入攔截器
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>