当management.port与服务器端口不同时,如何调用OncePerRequestFilter?

2023-12-20

我有一个可以延伸的过滤器OncePerRequestFilter。当我management.port=8081server.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以下的:

  1. 添加一个带有注释的类@ManagementContextConfiguration
  2. 把那个配置文件outside组件扫描(所以 Spring Boot 的正常自动配置不会找到它)
  3. 在 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(使用前将#替换为@)

当management.port与服务器端口不同时,如何调用OncePerRequestFilter? 的相关文章

随机推荐