Spring 종속성 주입을 활용하려면 일반적으로 Spring Boot에서 필터를 Bean으로 등록하는 것이 일반적입니다. @Autowire를 사용합니다. 그러나 이로 인해 필터가 두 번 호출될 수 있습니다.
알다시피 Spring Boot는 빈으로 표시된 필터를 서블릿 컨테이너에 자동으로 등록합니다. 이는 @Bean을 통해 등록된 필터가 Spring Security와 컨테이너 모두에 의해 호출된다는 것을 의미합니다.
이 문제를 해결하기 위한 두 가지 기본 접근 방식이 있습니다.
1. 자동 등록 방지:
필터에 종속성을 자동 연결할 필요가 없다면 간단히 빈으로 노출하지 마세요. 대신 일반 Java 클래스로 정의하고 Spring Security에만 수동으로 등록하세요.
http.addFilterBefore(new YourFilter(), BasicAuthenticationFilter.class);
2. Spring Boot 등록 비활성화:
필터를 수동으로 등록하고 종속성 주입을 계속 사용하려면 FilterRegistrationBean을 활용할 수 있습니다.
@Bean public FilterRegistrationBean registration(YourFilter filter) { FilterRegistrationBean<YourFilter> registration = new FilterRegistrationBean<>(filter); registration.setEnabled(false); // Disable Spring Boot registration return registration; }
이 구성은 Spring Boot가 필터를 등록하는 것을 방지하지만 허용합니다. Spring 종속성 주입을 위한 필터 빈을 지정해야 합니다.
위 내용은 Bean으로 정의될 때 스프링 필터가 두 번 호출되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!