4

스프링 부트 웹 애플리케이션에서 서블릿 필터를 구성하고 싶습니다. @Value 주석을 사용하여 일부 Bean 및 특성을 자동 작동시키고 싶습니다.구성 요소 스프링 부트로 서블릿 필터

@Configuration 
    public class MyWebConfig{ 
     @Autowire 
     MyFilter filter; 

     @Autowire 
     MyAnotherFilter anotherFilter; 

     @Bean 
     public FilterRegistrationBean someFilterRegistration() { 
      FilterRegistrationBean registration = new FilterRegistrationBean(); 
      registration.setFilter(filter); 
      registration.setOrder(1); 
      return registration; 
     } 

     @Bean 
     public FilterRegistrationBean someFilterRegistration() { 
      FilterRegistrationBean registration = new FilterRegistrationBean(); 
      registration.setFilter(anotherFilter); 
      registration.setOrder(2); 
      return registration; 
     } 

    } 

그리고 (간결을위한 하나의 필터를 표시) 필터를 모두 구성했습니다 : :이 사용하여 다음과 같은 구성을 달성 할 수 있었다

@Configuration 
public class MyFilter implements Filter{ 

    @Value("${my.property.key}") 
    private String myProperty; 

    public void doFilter(...){ 
     .... 
    } 

    //init and destroy stubs 
     ....  
} 

모든 것이 잘 작동합니다. 여전히 나는 몇 가지 질문이 있습니다 :
1) FilterRegistrationBean 코드를 주석 처리 할 때도 작동합니다. 특정 순서를 설정하려면 FilterRegistrationBean을 사용해야한다고 생각합니다. 옳은?
2) FilterRegistrationBean없이 URL 패턴과 같은 다른 설정이나 순서를 설정할 수있는 방법이 있습니까?
3) @Configuration 주석을 @Configuration 주석으로 대체 할 수 있다고 생각합니다.
4) 마지막으로 Filter 클래스 자체를 @ Component/@ Configuration으로 표시하는 것이 좋습니까?

주 응용 프로그램 클래스에서 @SpringBootApplication을 사용하고 있습니다.

답변

4

1) FilterRegistrationBean 코드를 주석 처리해도 작동합니다. 특정 순서를 설정하려면 FilterRegistrationBean을 사용해야한다고 생각합니다. 옳은?

Filter 빈은 명시 적 등록 빈을 제공하지 않으면 어떤 기본 구성으로 자동 등록되기 때문에 작동합니다.

2) FilterRegistrationBean을 사용하지 않고 URL 패턴과 같은 순서 또는 다른 구성을 설정할 수있는 방법이 있습니까?

당신은 당신의 Filter@Order를 사용하거나 Ordered을 구현함으로써 순서를 설정할 수 있습니다.

당신은 내가 필터 클래스에 @Configuration 주석을 대체 할 수있는 @Component를 사용할 수 있다고 생각 URL 패턴

3)을 설정하려는 경우에는 등록 bean을 사용해야하며 제대로 작동?

수정. 귀하의 필터는이 주석해야하므로 구성이 아닙니다 @Component 오히려

4 @Configuration 이상) 그리고 마지막으로이 필터 클래스 자체가 구성 요소/@ 구성 @로 표시해야 좋은가요?

그래, @Component의 필터에 주석을 달아도됩니다. 대안은 @Configuration 클래스에서 @Bean 메서드를 사용하는 것입니다.

관련 문제