我有下面一段代碼,這是我對this answer建模:將Spring @Resource成servlet
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推薦的方法是什麼?
這取決於。你介意你的servlet中的spring classes有依賴嗎? – mael
我對servlet中的'SpringBeanAutowiringSupport'已經很好了,所以我覺得沒問題。但是,使用聲明性的'@ Resource'而不是直接的'applicationContext.getBean()'調用會很好。 – Saintali
因爲Container負責初始化Servlet,所以你不得不使用'SpringBeanAutowiringSupport'來實現你想要的。 Servlet不是由Spring管理的。 –