我有一个可以延伸的过滤器OncePerRequestFilter
。当我management.port=8081
和server.port=8080
(或任何不同的端口),我的过滤器不会在任何 8081 URL 上调用。
过滤器是only调用 8080 URL。
如何让它在所有 URL 上调用,包括 8081 上的 URL?
Filter:
@Order( Ordered.LOWEST_PRECEDENCE )
public class TestFilter extends OncePerRequestFilter
{
public TestFilter()
{
System.out.println( "Started" );
}
@Override
protected boolean shouldNotFilter(HttpServletRequest request) throws ServletException
{
System.out.println( "Checked should not filter" );
return false;
}
@Override
public void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException
{
System.out.println( "Filtering" );
// continue the processing
filterChain.doFilter( request, response );
}
}
我通过以下方式添加它:
@Configuration
public class MyConfig
{
@Bean
public TestFilter testFilter()
{
return new TestFilter()
}
}
EDIT:我尝试添加@ManagementContextConfiguration
到我的配置类,但这也不起作用。
虽然我无法找到文档,但答案似乎是这样做all以下的:
- 添加一个带有注释的类
@ManagementContextConfiguration
- 把那个配置文件outside组件扫描(所以 Spring Boot 的正常自动配置不会找到它)
- 在 META-INF/spring.factories 中声明它:
META-INF/spring.factories:
在 spring-boot-2.0.0.RELEASE 之前:
org.springframework.boot.actuate.autoconfigure.ManagementContextConfiguration=com.packageoutsidescan.MyManagementFilterConfigurationClass
在 spring-boot-2.0.0.RELEASE 之后(web
子包):
org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration=com.packageoutsidescan.MyManagementFilterConfigurationClass
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)