我们都知道Filter的优先级大于Servlet,而springMVC又是基于Servlet来进行注入bean的,所以这就导致了Filter无法注入bean
接下来我们进行配置Filter:
web.xml
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>com.ipp.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/loanref/*</url-pattern>
</filter-mapping>
在LoginFilter中继续进行注入
接下来编写一个SpringUtils进行手动注入bean
/**
* @author yqb
* @date 2018年9月29日
* @version 1.0
*/
@Component
public class SpringUtils implements ApplicationContextAware{
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
if (SpringUtils.applicationContext == null) {
SpringUtils.applicationContext = applicationContext;
}
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
//根据name
public static Object getBean(String name) {
return getApplicationContext().getBean(name);
}
//根据类型
public static <T> T getBean(Class<T> clazz) {
return getApplicationContext().getBean(clazz);
}
public static <T> T getBean(String name, Class<T> clazz) {
return getApplicationContext().getBean(name, clazz);
}
}
接着在init方法中将userService的bean通过SpringUtils给注入进来