Servlet @Autowired Spring Bean 的方法 .

来源:互联网 发布:北京 职称评审知乎 编辑:程序博客网 时间:2024/06/08 15:05

使用@Autowired自动装配Bean时出现错误,代码如下:

public class GetYJGNQ extends HttpServlet {@Autowiredprivate 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());}

原文:点击打开链接
0 0