보통 서블릿 필터에서 스프링 빈을 주입 받지 못하는경우
아래와 getBean 메소드를 이용해서 스프링 빈을 가져오는 경우를 볼수 있다.
private static ApplicationContext ctx; public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { ctx = applicationContext; } /** * 빈 조회 * * @param beanName 스프링빈 이름 * @return */ public static Object getBean(String beanName) { return ctx.getBean(beanName); }
하지만 스프링에서 필터를 지원하는 클래스가 있다. DelegatingFilterProxy 라는 클래스를 이용하면 쉽게 스프링 빈을 주입받을수 있다.
web.xml
<filter> <filter-name>myCustomFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>myCustomFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
context.xml
<bean id="myCustomFilter" class="net.talkdev.filter.MyCustomFilter" />
filter-name의 이름으로 bean을 찾아서 filter로 등록을 해준다.
설정만으로 쉽게 스프링 빈을 주입받을수 있다.