我想做的是在Servlet过滤器中使用Spring。因此,基本上,可以利用我的Filter类中的依赖项注入。 作为主要要求,我无法对运行过滤器的环境进行假设,因为它是作为库提供的。当然,它是一个Servlet容器,但是我无法说说web.xml中包含的其他应用程序(其响应和请求将被我的过滤器拦截)。</ p>
因此,我的方法是创建一个新的Servlet,使其像这样在启动时执行:
<servlet>
<servlet-name>springInitializer</servlet-name>
<servlet-class>com.aef.configuration.SpringInitializer</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
这里有SpringInitializer
类,用于为整个Filter项目启用Spring功能
public class SpringInitializer {
public SpringInitializer() {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("application-context.xml");
}
}
,它适用于我的某些服务。 但是关于我的主要过滤器类不是
public class DecryptionRequestFilter implements Filter {
@Autowired
@Qualifier("JsonManager")
private ContentManager contentManager;
...
}
实际上,我的contentManager
永远是null
。
作为旁注,我说我的ContentManager
类用@Service
注释,而我的application-context.xml
像这样:
<context:component-scan base-package="com.aef" />
<mvc:annotation-driven />
web.xml就是这样
<servlet>
<servlet-name>springInitializer</servlet-name>
<servlet-class>com.aef.configuration.SpringInitializer</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<filter>
<filter-name>decryptionRequestFilter</filter-name>
<filter-class>com.aef.filter.DecryptionRequestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>decryptionRequestFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
你能给我一些提示吗?