Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 为什么@Resource可以';你不能在HttpServlet中工作吗?_Spring_Servlets_Resources_Annotations - Fatal编程技术网

Spring 为什么@Resource可以';你不能在HttpServlet中工作吗?

Spring 为什么@Resource可以';你不能在HttpServlet中工作吗?,spring,servlets,resources,annotations,Spring,Servlets,Resources,Annotations,我是tiro toSpring,希望在我的servlet中使用带有注释的自动连线@Resource。 在服务层和dao层中,此注释运行良好,当我在我的Servlet中使用它时,例外情况出现: com.fruit.action.merchant.MerAdd.service name='merAddService' is an unknown @Resource 如您所见,MerAdd是一个servlet,它扩展了我自己的BaseServlet,扩展了HttpServlet,service是me

我是tiro to
Spring
,希望在我的servlet中使用带有注释的自动连线
@Resource
。 在
服务层
dao层
中,此注释运行良好,当我在我的
Servlet
中使用它时,例外情况出现:

com.fruit.action.merchant.MerAdd.service name='merAddService' is an unknown @Resource
如您所见,
MerAdd
是一个servlet,它扩展了我自己的
BaseServlet
,扩展了
HttpServlet
service
meraddservi
的对象,在
MerAdd
servlet中:

    @Resource(name="merAddService")
private MerAddBusiness service;
public MerAddBusiness getService() {
    return service;
}

public void setService(MerAddBusiness service) {
    this.service = service;
}

有什么我应该做的来解决这个问题吗,mybe我误解了
@Resource
,你能帮我吗,谢谢

很遗憾,你不能在Servlet中使用@Resource注释自动连线。
这个春季论坛也讨论了同样的问题

问题:-“这里的问题是某些J2EE组件的依赖项被web容器注入其中。这意味着@Resource()注释将不起作用——容器将尝试将这些依赖项解析到JNDI(或其他地方)。”

可能的解决方法: 因为您可以在servlet中使用@Autowired注释
因此,您可以将请求处理委托给专用bean,该bean将自动连接@resourcebean,也就是说,使您的servlet只是一个符合servlet容器支持的API的入口点。因此,您可以根据需要通过spring配置实际的业务逻辑持有者bean,只需从IoC容器中检索它,并从servlet中调用必要的方法