您的位置:首页 > 其它

在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");

}

......

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: