gpt4 book ai didi

java - 我可以在自定义过滤器中使用@Autowired吗

转载 作者:行者123 更新时间:2023-12-02 10:36:20 25 4
gpt4 key购买 nike

我在自定义过滤器类中使用@Autowire。我遇到空指针异常。

@Autowire 在过滤器中起作用吗?

这是代码:

public class MyFilter extends CustomFilter {

@Autowire
public MyClass myClass;

@Override
public String getInfo(){
return myClass.getMessage();
}
}

这就是我在配置类中注册 bean 的方式

@Configuration
public class ConfigLoader{

@Bean
public FilterRegistrationBean myFilterBean() {
final FilterRegistrationBean filterBean = new FilterRegistrationBean();
filterBean.setFilter(new MyFilter());
filterBean.addUrlPatterns("/*");
return filterBean;
}
}

自定义过滤器:

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();
}

最佳答案

向过滤器类添加@Component注释。

@Component
public class MyFilter extends CustomFilter {

...

让 Spring 创建过滤器 bean 并在配置中 Autowiring 它:

@Configuration
public class ConfigLoader{

@Autowired
private MyFilter myFilter;

@Bean
public FilterRegistrationBean myFilterBean() {
final FilterRegistrationBean filterBean = new FilterRegistrationBean();
filterBean.setFilter(myFilter);
filterBean.addUrlPatterns("/*");
return filterBean;
}
}

关于java - 我可以在自定义过滤器中使用@Autowired吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53268071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com