Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java servlet过滤器中的弹簧注入_Java_Spring_Spring Mvc_Spring Security - Fatal编程技术网

Java servlet过滤器中的弹簧注入

Java servlet过滤器中的弹簧注入,java,spring,spring-mvc,spring-security,Java,Spring,Spring Mvc,Spring Security,我正在尝试对servlet过滤器进行spring注入。过滤器是引用的jar文件的一部分。所以我无法将其更改为拦截器。在我的插件项目的web.xml中 自定义过滤器 org.springframework.web.filter.DelegatingFilterProxy someinitparam 它的价值 自定义过滤器 /mywebservices/* 在spring.xml中,我将这样使用 <bean id="CustomFilter" class="com.abc.CustomFi

我正在尝试对servlet过滤器进行spring注入。过滤器是引用的jar文件的一部分。所以我无法将其更改为拦截器。在我的插件项目的web.xml中


自定义过滤器
org.springframework.web.filter.DelegatingFilterProxy
someinitparam
它的价值
自定义过滤器
/mywebservices/*
在spring.xml中,我将这样使用

<bean id="CustomFilter" class="com.abc.CustomFilter"></bean>
它会起作用的


请建议。

我认为您不能在spring上下文之外注入bean,并且您的servlet过滤器在spring上下文之外。如果您希望在上下文中使用过滤器,那么我建议您使用SpringWeb拦截器。这些拦截器位于spring上下文中,您可以利用这些拦截器的spring容器功能。

您可以像在web.xml中那样配置过滤器

<filter>
   <filter-name>CustomFilter</filter-name>
   <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
   <filter-name>CustomFilter</filter-name>
   <url-pattern>/mywebservices/*</url-pattern>
</filter-mapping>

自定义过滤器
org.springframework.web.filter.DelegatingFilterProxy
自定义过滤器
/mywebservices/*
然后在spring.xml中注入属性

<bean id="CustomFilter" class="com.abc.CustomFilter">
   <property name="someParameter">
      <value>some value</value>
   </property>
</bean>

一些价值

它能用吗??你试过了吗?嗯。。听起来很棘手。Spring依赖项注入通常是在Spring上下文上创建的bean上完成的,而过滤器是由JavaEE服务器本身创建的。也许您可以做的是——如果您可以确保在创建过滤器类时spring上下文已经准备好——尝试以某种方式获取对它的引用。。顺便问一下,你能告诉我们更多关于你的应用程序的信息吗?你使用SpringMVC吗?如果是这样,也许您不需要使用servletfilter@TechExchange. 我已经试过了,但它给我的应用程序造成了严重错误。@gerrytan。过滤器是jar文件的一部分。我正在使用Jive工具。它只基于spring MVC。@User222如果它导致严重错误,您应该说明它是什么。另外,您不应该使用Acegi安全性,因为它已不再开发,而且不安全。谢谢您的回答。我们是否可以在servlet过滤器的it参数中注册为元素的属性,或者我们是否必须在web.xml.xml中的元素中指定它,以及我已经在web.xml中将url模式指定为/mywebservices/*。我是否需要在id为filterChainProxy的bean中将其作为值添加到/myservice/**中。Please helpFilterChainProxy是可选的,用于对执行哪些筛选器进行细粒度控制。通常不需要显式定义它。如果它是因为其他原因存在的,那么如果你也在那里添加了你的过滤器,那么你做得不错。不,这不会起作用。另一个答案是正确的,基本上您让您的web上下文创建一个过滤器实例,然后您告诉Spring创建另一个实例,该实例不会用作过滤器。您可以使用诸如或之类的替代方法来获取Spring上下文bean。这就是DelegatingFilterProxy的作用。这个答案根本不正确
<bean id="CustomFilter" class="com.abc.CustomFilter">
   <property name="someParameter">
      <value>some value</value>
   </property>
</bean>