为什么@Resource不能在HttpServlet中工作?

时间:2013-07-21 08:05:42

标签: spring servlets resources annotations

我转到Spring,想在我的servlet中使用带注释@Resource的自动连线。 在service layerdao layer中,此注释效果很好,当我在Servlet中使用它时,会出现异常:

com.fruit.action.merchant.MerAdd.service name='merAddService' is an unknown @Resource

如您所见,MerAdd是一个servlet,扩展了我自己的BaseServlet HttpServletserviceMerAddServie的对象,{{1} servlet:

MerAdd

我有什么办法可以解决这个问题吗,mybe我误解了 @Resource(name="merAddService") private MerAddBusiness service; public MerAddBusiness getService() { return service; } public void setService(MerAddBusiness service) { this.service = service; } ,你可以帮助我吗,谢谢你...

1 个答案:

答案 0 :(得分:0)

不幸的是,您无法在Servlet中使用@Resource注释进行自动装配 今年春季论坛link

讨论了同样的问题

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

可能的解决方法: - 因为您可以在servlet中使用@Autowired注释 因此,您可以将请求处理委托给将在其中自动装配@Resource Bean的专用bean,即使您的servlet成为符合servlet容器支持的API的入口点。因此,您可以通过spring配置实际的业务逻辑持有者bean,只需从IoC容器中检索它并从servlet调用必要的方法