2011-04-27 2 views
4

init-param 항목이 내 web.xml에 정의되어 있지만 필터 내에서 액세스하는 방법을 모르겠습니다. getFilterConfig()null을 반환합니다. init(FilterConfig) docs은 의 이름을 기반으로 빈 속성에 주입하는 것처럼 들린다. 예를 들어 foo이라는 이름의 매개 변수는 foo이라는 필터의 속성에 값이 주입되지만 doFilterInternal의 일부 로그인은 일어나지 않습니다.Spring은 OncePerRequestFilter와 init-param 값을 어떻게 연결합니까?

나는 현대의 Spring (처음에는 1.x 일을 사용했다.)과 Spring MVC에 완전히 익숙하지 않았기 때문에 나는 분명히 뭔가를 놓쳤을 것이라고 확신하지만 나는 볼 수 없다. 그것이 무엇인지. 어떤 도움을 주셔서 감사합니다.

답변

5

init-param 값은 필터 자체의 속성에 매핑됩니다.

public MyFilter extends OncePerRequestFilter { 

    // the following should be called once the `GenericFilterBean` `init` method has run   
    public void setFoo(String foo){ 
     this.foo = foo; 
    } 
} 


<filter> 
    <init-param> 
      <param-name>foo</param-name> 
      <param-value>bar</param-value> 
    </init-param> 
</filter> 
+0

그건 내 문서 읽기 였지만 테스트는 어떤 이유로 든 일어나지 않았 음을 나타냅니다. 결국, 방금 포기하고 내 'applicationContext.xml'에 값을 정의했습니다.이 값은 속성의 값 목록을보다 쉽게 ​​정의 할 수 있다는 장점이 있습니다. –

+0

mmm ... 정말로 (적어도 2 ~ 3 년 전) 그것을 사용하거나 적어도 마지막으로 사용한 적이 있습니다. 여전히 문제가있는 경우 GenericFilterBean # init (FilterConfig)에 중단 점을 추가하십시오. 온전한 검사로'addRequiredProperty ("wibble")'을 빈 생성자에 추가 할 수 있습니다. –

+0

필자는 내 환경에서 이상한 일이 일어나고 다른 경로를 찾아야한다고 결론을 내렸지 만 문서화 된 동작과 일치하기 때문에이 대답을 수락했습니다. –

관련 문제