如何将Spring数据JPA存储库注入Servlet过滤器?
我在用电话。我想使用数据库中的重写规则,因此使用如何将Spring数据JPA存储库注入Servlet过滤器?,spring,spring-data-jpa,tuckey-urlrewrite-filter,Spring,Spring Data Jpa,Tuckey Urlrewrite Filter,我在用电话。我想使用数据库中的重写规则,因此使用配置,它允许您在运行时获取规则。我创建了一个扩展重写规则的类: public class Foo extends RewriteRule { @Autowired private MyRepository myRepository; public boolean init(ServletContext servletContext) { return true; } @Override public Rewr
配置,它允许您在运行时获取规则。我创建了一个扩展重写规则的类:
public class Foo extends RewriteRule {
@Autowired
private MyRepository myRepository;
public boolean init(ServletContext servletContext) {
return true;
}
@Override
public RewriteMatch matches(HttpServletRequest request, HttpServletResponse response) {
//myRepository is null
return super.matches(request, response);
}
@Override
public void destroy() {
}
}
我想在这个Foo类中使用Spring数据JPA存储库,但该存储库看起来是空的
如何正确地插入它?像往常一样在
web.xml
中声明过滤器,只是需要提供org.springframework.web.filter.DelegatingFilterProxy
作为过滤器类名,而不是实际的类名
<filter>
<filter-name>urlRewriteFilter</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>urlRewriteFilter</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
由于您的过滤器实例现在由Spring管理,您可以将任何Spring管理的bean注入其中。谢谢@manish。我在UrlRewriteFilter.class.getResourceAsStream(“build.number.properties”)的UrlRewriteFilter.getFullVersionString()静态方法中得到一个NullPointerException;这与你原来的问题无关。对于使用getResourceAsStream的
NullPointerException,您将在StackOverflow上找到大量答案。如果它们都不起作用,请打开一个单独的问题。在没有DelegatingFilterProxy的情况下,它工作正常,因此它必须与此相关。设置init param targetFilterLifecycle=true修复了它。非常感谢!
<bean id="urlRewriteFilter" class="org.tuckey.web.filters.urlrewrite.UrlRewriteFilter"/>