spring boot 필터 필터 등록 Bean 구현 방식

필 터 를 실현 할 수 있 는 두 가지 방법 이 있다.
1:FilterRegistration Bean 인 스 턴 스 를 통 해 등록
2:@WebFilter 주석 을 통 해 적용
두 번 째 는 필터 사이 의 우선 순 위 를 설정 할 수 없 기 때문에 첫 번 째 를 선택 하 십시오.
우선 순 위 를 보 여주 기 위해 테스트 필터 클래스 2 개 를 만 듭 니 다:Test1Filter,Test2Filter
javax.servlet.Filter 인 터 페 이 스 를 실현 하여 doFilter(ServletRequest arg 0,ServletResponse arg 1,FilterChain arg 2)방법 을 덮어 쓰 고 차단 또는 실행 을 결정 합 니 다.

public class Test1Filter implements Filter {

  @Override
  public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
      throws IOException, ServletException {
    // TODO Auto-generated method stub
    HttpServletRequest request=(HttpServletRequest)arg0;
    System.out.println("      filter1  ,  url:"+request.getRequestURI());
    arg2.doFilter(arg0,arg1);
  }

}

public class Test2Filter implements Filter {
  @Override
  public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
      throws IOException, ServletException {
    // TODO Auto-generated method stub
    HttpServletRequest request=(HttpServletRequest)arg0;
    System.out.println("      filter2  ,  url:"+request.getRequestURI());
    arg2.doFilter(arg0,arg1);
  }

}
springboot configuration 에 서로 다른 FilterRegistration Bean 인 스 턴 스 를 설정 하여 사용자 정의 필 터 를 등록 합 니 다.
configuration 클래스 를 만 듭 니 다.

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.example.demo.filter.Test1Filter;
import com.example.demo.filter.Test2Filter;

@Configuration
public class DemoConfiguration {

  @Bean
  public FilterRegistrationBean<Test1Filter> RegistTest1(){
    //  FilterRegistrationBean           
    //  @WebFilter  
    FilterRegistrationBean<Test1Filter> bean = new FilterRegistrationBean<Test1Filter>();
    bean.setFilter(new Test1Filter());//        
    bean.setName("flilter1");//     
    bean.addUrlPatterns("/*");//      
    bean.setOrder(1);//   ,   
    return bean;
  }
  @Bean
  public FilterRegistrationBean<Test2Filter> RegistTest2(){
    //  FilterRegistrationBean           
    //  @WebFilter  
    FilterRegistrationBean<Test2Filter> bean = new FilterRegistrationBean<Test2Filter>();
    bean.setFilter(new Test2Filter());//        
    bean.setName("flilter2");//     
    bean.addUrlPatterns("/test/*");//      
    bean.setOrder(6);//   ,     
    return bean;
  }
}
그 속
1.첫 번 째 bean 은 모든 경 로 를 차단 하고 두 번 째 는/test/*경로 만 차단 합 니 다.
2 첫 번 째 bean 우선 순 위 는 1 이 고 두 번 째 는 6 이 설정 되 어 있 습 니 다.낮 을 수록 우선 하기 때문에 필터 1 은 필터 2 앞에서 차단 해 야 합 니 다.
springboot 을 실행 합 니 다.방문/test/*다음 그림 을 요청 합 니 다.다음 그림 에서 필터 1 만 차단 하고 필터 2 경로 가 일치 하지 않 습 니 다.

만약.addUrlPatterns()를중간 차단 경 로 를 같은/test/*로 바 꾸 면 모든 요청 이 2 개의 필 터 를 터치 하고 필터 1 은 항상 가장 먼저 차단 합 니 다.

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기