gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:34:26 25 4
gpt4 key购买 nike

我有一个扩展 OncePerRequestFilter 的过滤器。当我使用 management.port=8081server.port=8080(或任何不同的端口)时,我的过滤器不会在任何 8081 Urls 上调用。

过滤器在 8080 Urls 上调用。

如何让它在所有 Urls 上调用,包括 8081 上的那些?

过滤器:

@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()
}
}

编辑:我尝试将 @ManagementContextConfiguration 添加到我的配置类中,但这也不起作用。

最佳答案

虽然我找不到文档,但答案似乎是执行以下所有操作:

  1. 添加一个用 @ManagementContextConfiguration 注释的类
  2. 将该配置文件放在组件扫描之外(这样 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

关于java - 当 management.port 与服务器端口不同时,如何调用 OncePerRequestFilter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50690795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com