我在自定义过滤器类中使用@Autowire。我遇到空指针异常。
@Autowire 在过滤器中起作用吗?
这是代码:
public class MyFilter extends CustomFilter {
@Autowire
public MyClass myClass;
@Override
public String getInfo(){
return myClass.getMessage();
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我在配置类中注册 bean 的方式
@Configuration
public class ConfigLoader{
@Bean
public FilterRegistrationBean myFilterBean() {
final FilterRegistrationBean filterBean = new FilterRegistrationBean();
filterBean.setFilter(new MyFilter());
filterBean.addUrlPatterns("/*");
return filterBean;
}
}
Run Code Online (Sandbox Code Playgroud)
自定义过滤器:
public abstract class CustomFilter implements Filter {
public FilterConfig getFilterConfig() {
return this.filterConfig;
}
public void setFilterConfig(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws IOException, ServletException {
chain.doFilter(req, resp);
this.clearContext();
}
protected abstract String getInfo();
}
Run Code Online (Sandbox Code Playgroud)
@Component为过滤器类添加注释。
@Component
public class MyFilter extends CustomFilter {
...
Run Code Online (Sandbox Code Playgroud)
让 Spring 创建过滤器 bean 并在配置中自动装配它:
@Configuration
public class ConfigLoader{
@Autowired
private MyFilter myFilter;
@Bean
public FilterRegistrationBean myFilterBean() {
final FilterRegistrationBean filterBean = new FilterRegistrationBean();
filterBean.setFilter(myFilter);
filterBean.addUrlPatterns("/*");
return filterBean;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7393 次 |
| 最近记录: |