mah*_*nya 0 jersey spring-boot
根据Spring 文档:
您还可以通过设置spring.jersey.type = filter来使用Filter而不是Servlet(在这种情况下,要替换或覆盖的@Bean是jerseyFilterRegistration).
根据这个问题的答案:
如果要根据特定条件过滤和/或修改请求,请使用过滤器.当您想要控制,预处理和/或后处理请求时,请使用Servlet.
那么,如果想使用带有Spring Boot的Jersey,既可以提供json内容,又可以应用过滤器,例如检查授权和向所有响应添加标头?spring文档读起来就像我必须选择Jersey的过滤器或servlet角色.
我可以在Spring Boot应用程序中同时使用Jersey,如果是这样,怎么做?
那么,如果想使用带有Spring Boot的Jersey,既可以提供json内容,又可以应用过滤器,例如检查授权和向所有响应添加标头?
这个问题没有多大意义.
泽西岛本身就是一个处理引擎.所有从servlet容器需要的是HttpServeltRequest并HttpServletResponse开始处理该请求.这些既可以作为servlet获得Filter,也可以作为servlet获得HttpServlet.如果您查看主要的Jersey servlet容器组件ServletContainer,您将看到它既扩展HttpServlet 又实现Filter.
因此能够将Jersey配置为过滤器或servlet并不是Spring Boot特有的; 泽西就是这样设计的.您可以将Jersey配置为没有 Spring Boot 的过滤器或servlet .
就过滤系统而言,Jersey拥有自己的过滤系统,独立于任何servlet API.但是,如果您想使用servlet过滤器,那么无论您是否将Jersey配置为过滤器或servlet,都没有理由不这样做.如果您了解servlet过滤器链,那么您将知道过滤器会在下一个过程中被调用,然后调用servlet.因此,如果您想添加过滤器并让它在Jersey过滤器之前执行,您可以这样做.或者如果Jersey是一个servlet,你的过滤器将在Jersey servlet之前被调用.无论哪种方式,它都是相同的结果.Jersey不会因为它是一个过滤器或者是一个servlet而改变任何处理行为.
spring文档读起来就像我必须选择Jersey的过滤器或servlet角色
是Servlet或过滤器.应该清楚我上面提到的.您可以拥有多个servlet过滤器.过滤器一个接一个地发生.您可以添加与Jersey无关的过滤器.他们都获得通过相同的ServletRequest和ServletResponse,所以它们都具有相同的请求和响应交互.如果要创建用于添加标头的过滤器,请执行此操作.它不需要了解泽西岛的任何信息.
如果你想为auth/headers等创建Jersey特定的过滤器(它独立于任何servlet过滤器机制),你可以查看过滤器和拦截器(你可以在这个很棒的答案中看到一个auth示例).
如果你想添加servlet过滤器,那么你可以FilterRegistrationBean在Spring Boot中使用s来实现.
@Bean
public FilterRegistrationBean anotherFilter() {
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
901 次 |
| 最近记录: |