我转到Spring
,想在我的servlet中使用带注释@Resource
的自动连线。
在service layer
和dao layer
中,此注释效果很好,当我在Servlet
中使用它时,会出现异常:
com.fruit.action.merchant.MerAdd.service name='merAddService' is an unknown @Resource
如您所见,MerAdd
是一个servlet,扩展了我自己的BaseServlet
HttpServlet
,service
是MerAddServie
的对象,{{1} servlet:
MerAdd
我有什么办法可以解决这个问题吗,mybe我误解了 @Resource(name="merAddService")
private MerAddBusiness service;
public MerAddBusiness getService() {
return service;
}
public void setService(MerAddBusiness service) {
this.service = service;
}
,你可以帮助我吗,谢谢你...
答案 0 :(得分:0)
不幸的是,您无法在Servlet中使用@Resource注释进行自动装配 今年春季论坛link
讨论了同样的问题问题: - “这里的问题是某些J2EE组件的Web容器注入了依赖关系。这意味着@Resource()注释不起作用 - 容器将尝试将这些依赖项解析为JNDI(或其他地方)。“
可能的解决方法: - 因为您可以在servlet中使用@Autowired注释 因此,您可以将请求处理委托给将在其中自动装配@Resource Bean的专用bean,即使您的servlet成为符合servlet容器支持的API的入口点。因此,您可以通过spring配置实际的业务逻辑持有者bean,只需从IoC容器中检索它并从servlet调用必要的方法