在doFilter方法中无法注入set方法 解决办法
2015-06-04 17:07
477 查看
今天在使用doFilter时,测试了十几次就是无法获取newsService对象,总是报newsService为null, 经过网上查询相关资料之后发现在普通的java中,只要声明(set,get方法)后在spring-application配置文件中配置就可以了,但是由于Filter与Listener需要配置在web.xml文件中,所以它们的对象是由容器创建的。通常在Spring的application-context.xml配置文件中编写的bean由Spring负责创建,所以直接在Spring配置文件配置过滤器与监听器是无法达到注入目的的。
可以使用如下方法,例:
public class ValidateWeixinController extends BaseController implements Filter {
private NewsService newsService;
private InfoService infoService;
private StadiumService stadiumService;
public NewsService getNewsService() {
return newsService;
}
public void setNewsService(NewsService newsService) {
this.newsService = newsService;
}
public InfoService getInfoService() {
return infoService;
}
public void setInfoService(InfoService infoService) {
this.infoService = infoService;
}
public StadiumService getStadiumService() {
return stadiumService;
}
public void setStadiumService(StadiumService stadiumService) {
this.stadiumService = stadiumService;
}
@Override
public void init(FilterConfig config) throws ServletException {
System.out.println("ValidateWeixinController启动成功!");
ServletContext context = config.getServletContext();
ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(context);
newsService = (NewsService) ac.getBean("newsService");
infoService = (InfoService) ac.getBean("infoService");
stadiumService = (StadiumService) ac.getBean("stadiumService");
}
......
}
可以使用如下方法,例:
public class ValidateWeixinController extends BaseController implements Filter {
private NewsService newsService;
private InfoService infoService;
private StadiumService stadiumService;
public NewsService getNewsService() {
return newsService;
}
public void setNewsService(NewsService newsService) {
this.newsService = newsService;
}
public InfoService getInfoService() {
return infoService;
}
public void setInfoService(InfoService infoService) {
this.infoService = infoService;
}
public StadiumService getStadiumService() {
return stadiumService;
}
public void setStadiumService(StadiumService stadiumService) {
this.stadiumService = stadiumService;
}
@Override
public void init(FilterConfig config) throws ServletException {
System.out.println("ValidateWeixinController启动成功!");
ServletContext context = config.getServletContext();
ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(context);
newsService = (NewsService) ac.getBean("newsService");
infoService = (InfoService) ac.getBean("infoService");
stadiumService = (StadiumService) ac.getBean("stadiumService");
}
......
}
相关文章推荐
- Correlation Filter in Visual Tracking系列一
- HTML---Android中调用js方法及js中调用本地方法
- ACE学习笔记一(基本的TCP/IP Socket用法)
- 我“窃”对feed和search的认识
- 新浪 腾讯 yahoo股票api哪个好
- SOA实践指南-读书笔记
- 中国考生SAT考试时间表:高二、三参加考试
- C#实现强制关闭当前程序进程
- 一步步教你,获得域名SSL密钥加密zhengshu
- hdu 1394 Minimum Inversion Number(树状数组)
- HTML---Android与Javascript交互之入门
- poj 3061 Subsequence
- 第14周-输入输出流,文本文件-项目1 - 小玩文件(1)
- 【Java代码保护探索之路系列:代码签名】之一:代码签名开篇
- Android如何用代码重复加载同一个xml
- ccs平台 28335mcu 编程过程中出现RAM不够的问题,修改.cmd文件扩容
- 微服务架构——不是免费的午餐
- 一切成功源于积累——20150604 欧美 六年最大单日涨幅 6月2日 6月4日 半小时1600点
- php-fpm配置
- GestureDetector.OnGestureListener onScroll()