Servlet3.0中使用@Resource注解报错 Cannot create resource instance

在SSM框架中,在Servlet中使用@Resource报错
图片描述

图片描述

图片描述

图片描述

图片描述

图片描述

阅读 5.3k
4 个回答

在Servlet中使用@Resource注解不起作用,然后使用了@AutoWirted注解,并在Servlet中重写init()方法
@Override

public void init() throws ServletException {
    super.init();
    WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
    AutowireCapableBeanFactory factory = wac.getAutowireCapableBeanFactory();
    factory.autowireBean(this);
}

这样就可以自动注入了

把@Resource改成@Resource (name = "registerItemService")

新手上路,请多包涵

其他类都没有这个问题吗?留心配置文件,这个是说明service注入到了容器但可能无法创建实例

servlet 不在spring 的bean中管理,用不了自动注解的,有两种方案,一种是直接获取

WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
target = context.getBean("registerItemService");

另外一种是放静态工具里,application 的启动后自动注入,放一个静态工具里
还有一种直接单例 new 出来好了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题