0

我很喜欢Spring,并且想@Resource在我的 servlet 中使用带有注释的自动连接。在service layeranddao layer中,这个注解效果很好,当我在我Servlet的 中使用它时,异常来了:

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

如您所见,MerAdd是一个 servlet 扩展了我自己的BaseServlet扩展HttpServletservice是一个对象MerAddServie,在MerAddservlet 中:

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

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

有什么办法可以解决这个问题,我可能是我误解@Resource了,你能帮我吗,谢谢~

4

1 回答 1

0

不幸的是,您不能在 Servlet 中使用 @Resource 注释自动装配。此春季论坛链接
中讨论了相同的问题

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

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

于 2013-07-21T10:08:31.127 回答