过滤器中可以获取bean吗
时间: 2024-05-07 14:20:08 浏览: 62
可以获取。在过滤器中,可以通过 ServletContext 对象来获取应用程序上下文,从而获取 Spring 容器中的 bean。例如:
```
public class MyFilter implements Filter {
private ApplicationContext context;
public void init(FilterConfig config) throws ServletException {
context = WebApplicationContextUtils.getRequiredWebApplicationContext(config.getServletContext());
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
MyBean myBean = context.getBean(MyBean.class);
// 使用 myBean 处理请求
chain.doFilter(request, response);
}
public void destroy() {
// do nothing
}
}
```
在 init 方法中,使用 WebApplicationContextUtils.getRequiredWebApplicationContext 方法获取应用程序上下文。然后,就可以使用 context.getBean 方法获取指定的 bean 对象。在 doFilter 方法中,就可以使用获取到的 bean 处理请求。
阅读全文