您的位置:首页 > 编程语言 > Java开发

Servlet @Autowired Spring Bean 的方法 .

2014-05-13 21:53 393 查看
使用@Autowired自动装配Bean时出现错误,代码如下:

public class GetYJGNQ extends HttpServlet {
@Autowired
private IDataForWebService getDataForWebService;
/**
*
*/
private static final long serialVersionUID = 1L;

public void setGetDataForWebService(IDataForWebService getDataForWebService) {
this.getDataForWebService = getDataForWebService;
}

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.print(getDataForWebService.getYJGNQ());
out.flush();
out.close();
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

this.doGet(request, response);
}
}


代码getDataForWebService.getYJGNQ()会java.lang.NullPointerException,因为getDataForWebService 没有装配上,所以是空指针

解决方式如下:

第一种:

在Servlet的init方法中增加以下代码,即可通知Servlet在启动时,自动查找getDataForWebService并装配,
public void init(ServletConfig config) throws ServletException {
ServletContext servletContext = config.getServletContext();
WebApplicationContext webApplicationContext = WebApplicationContextUtils
.getWebApplicationContext(servletContext);
AutowireCapableBeanFactory autowireCapableBeanFactory = webApplicationContext
.getAutowireCapableBeanFactory();
autowireCapableBeanFactory.configureBean(this, "getDataForWebService");
}


这个在配置文件中配置好使,但现在我们使用的自动装配,那就要用第二种。

第二种方式:
public void init(ServletConfig config) throws ServletException {
SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
config.getServletContext());
}


原文:点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐