我需要在我的应用程序中使用第三方过滤器。我使用外部jar(参见代码中的导入语句)作为这个过滤器。在pom.xml中为过滤器jar添加了依赖项。现在我想调用这个过滤器,但是不确定如何使用xml配置这样做。我有正确的springboot等效代码来应用此过滤器。
(我的项目使用servlet +spring(但没有spring引导),但我仍然尝试通过添加spring引导依赖项来添加下面的代码,但过滤器不起作用)有人能帮助我与下面代码的xml等效吗?
package com.dd.demo;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import javax.servlet.Filter;
import javax.servlet.ServletException;
import com.ext.auth.Access; //this is external jar class
import com.ext.auth.filter.AuthFilter; //this is external jar class
@Configuration
@ComponentScan(basePackages = "com.dd.demo")
public class AuthConfig {
@Bean
public Access access() {
Access access = new Access(new String[]{"path=C:/Users/config.properties"});
return access;
}
@Bean(name = "authFilter")
public Filter authFilter() throws ServletException {
return new AuthFilter(true,access());
}
@Bean
public FilterRegistrationBean authFilterRegistration() throws ServletException {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(authFilter());
registration.addUrlPatterns("/*");
registration.setOrder(0);
return registration;
}
} ```
要注入spring bean作为依赖项,我们可以使用'org.springframework.web.filter '。
<filter>
<filter-name>authFilter</filter-name>
<filter-class>
org.springframework.web.filter.DelegatingFilterProxy
</filter-class>
</filter>
通过使用DelegatingFilterProxy,我们可以在applicationContext.xml中将过滤器定义为bean,而不是直接将过滤器添加到web.xml中。
<bean id="access" class="Access">
<property name=path value="C:/Users/config.properties"/>
</bean>
<bean id="authFilter" class="AuthFilter">
<constructor-arg ref="access"/>
</bean>