spring - 注入依赖spring的propleme
问题描述
对于我们在组建期间创建的项目,我们使用 spring 进行依赖注入。
我们有一个 servlet-context.xml 文件,其配置如下:
<context:component-scan base-package="fr.autoquiz3000" />
我创建了几个控制器,注入 dao 没有问题,例如:
package fr.autoquiz3000;
@Controller
@RequestMapping("/public")
public class PublicController {
@Autowired
private UserDao uDao;
@GetMapping("/connection")
public ModelAndView getConnection() {
return new ModelAndView("public/viewConnexion");
}
但我尝试使用这样的 dao 创建一个过滤器:
package fr.autoquiz3000;
@Component
public class CountQuizStudent implements Filter {
@Autowired
private QuizToDoDao qtdDao;
我有这个错误:
qtdDao= null
java.lang.NullPointerException
at fr.autoquiz3000.CountQuizStudent.doFilter(CountQuizStudent.java:41)
有人可以向我解释我做错了什么!
谢谢你!
解决方案
对于过滤器覆盖 init 方法并在那里设置 Spring bean:
@Override
public void init(FilterConfig filterConfig) throws ServletException {
WebApplicationContext springContext =
WebApplicationContextUtils.getWebApplicationContext(filterConfig.getServletContext());
userDao = springContext.getBean(UserDao.class);
}
或使用 DelegatingFilterProxy:
<filter>
<filter-name>yourFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>yourFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
@Component("yourFilter")
public class YourFilter implements Filter {
// auto wiring available as it's just Spring Bean
}
推荐阅读
- javascript - 克隆具有相同外观的屏幕外元素
- javascript - Vue.js 导入图片
- delphi - 与 SSL DLL 相关的问题
- numbers - Julia - significance of f0 after a number
- django - Django 复杂查询:组合输出
- regex - 删除 Pandas 中字符串列中的 Dash/Dots 并将其替换为 Null
- python - 查找与另一个列表对应的元素的索引
- php - PHP:如何从 phpspreadsheet 中的每一行获取第一个单元格值
- jupyter-notebook - 有没有办法在 Google-Colaboratory 中使用 nbextensions 配置器?
- node.js - Nodejs:Date().toLocaleString() 格式在 Node 9 和 10 之间发生了变化;影响 Jest 快照