Как сделать, чтобы OncePerRequestFilter вызывался, когда management.port отличается от порта сервера? - PullRequest
0 голосов
/ 05 июня 2018

У меня есть фильтр, который расширяет OncePerRequestFilter.Когда я management.port=8081 и server.port=8080 (или любые другие порты), мой фильтр не вызывается ни на один 8081 URL.

Фильтр только вызывается на 8080 URL.

Как мне сделать так, чтобы он вызывался на всех URL, включая те, что на 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 Ответ

0 голосов
/ 05 июня 2018

Хотя мне не удалось найти документацию, похоже, ответ состоит в том, чтобы сделать все из следующего:

  1. Добавить класс, помеченный @ManagementContextConfiguration
  2. Поместите этот файл конфигурации вне проверки компонентов (чтобы обычная автоконфигурация весенней загрузки не нашла его)
  3. Объявите его в META-INF / spring.factories:

META-INF / spring.factories:

org.springframework.boot.actuate.autoconfigure.ManagementContextConfiguration=com.packageoutsidescan.MyManagementFilterConfigurationClass
...