1

我有以下一段代码,我以这个答案为模型:

public class DeployerServlet extends HttpServlet {
    @Resource
    Engine engine;

    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this, config.getServletContext());
    }

    // ...
}

但是 servlet 甚至没有正确实例化。创建实例时,Tomcat 会尝试com.example.DeployerServlet/engine在 JNDI 中查找名称,这会导致异常,

SEVERE: Allocate exception for servlet Deploy Servlet
javax.naming.NameNotFoundException: Name com.example.DeployerServlet is not bound in this Context

那么,将 Spring bean 注入 servlet 的推荐方法是什么?

4

2 回答 2

1

@Resource注释是一个JavaEE元素。它用于声明对资源的引用。@Inject尽管 Spring 可以像使用and一样使用它,但@Autowired在这种情况下,servlet Container 首先起作用。只需将您的替换@Resource@Autowired.

于 2013-08-05T15:22:17.203 回答
0

似乎是您的构建未正确完成。清理你的项目并重建。你的问题会解决

于 2013-08-05T14:35:02.793 回答