一尘不染

将Spring @Resource注入Servlet

tomcat

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

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的推荐方法是什么?


阅读 309

收藏
2020-06-16

共1个答案

一尘不染

@Resource注释是JavaEE的元件。它用于声明对资源的引用。尽管Spring可以使用与@Inject和相同的方式来使用它@Autowired,但是在这种情况下,Servlet容器首先起作用。只需将替换@Resource为即可@Autowired

2020-06-16