在Spring的Filter中使用@Value获取不到properties设置的属性值
application.properties
配置如下:
epp.static.http.new.domain=www.heoller.com
Filter类如下:
public class ReplaceIconStaticResourceFilter implements Filter { @Value("${epp.static.http.new.domain}") private String newStaticDomain; @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setAttribute("ctxNew", newStaticDomain); chain.doFilter(request, response); } @Override public void destroy() { } }
web.xml
配置如下:
<filter> <filter-name>replaceIconStaticResourceFilter</filter-name> <filter-class>com.suning.filter.ReplaceIconStaticResourceFilter</filter-class> </filter> <filter-mapping> <filter-name>replaceIconStaticResourceFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
上面这么一通操作之后, newStaticDomain
值为null
解决办法:
<filter> <filter-name>replaceIconStaticResourceFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <init-param> <param-name>targetFilterLifecycle</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>replaceIconStaticResourceFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>