已經變得非常舒適的依賴注入作爲一種風格,我發現自己寫的HTTP Servlet是這樣的:注入依賴成一個普通的老Tomcat的HTTP Servlet中
public class FooServlet extends HttpServlet {
private Dependency dependency;
public void setDependency(Dependency dependency) {
this.dependency = dependency;
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
...
Result r = dependency.doSomething(...);
...
}
這是美麗的容易單元測試,而且我很想保持模型 - 但現在我來部署它在Tomcat中,我意識到我不知道我可以從哪裏調用setDependency()。
浮現在腦海中一些模糊的可能性:
- 獲取的servlet參數的init()。這些只是字符串,所以我不得不做一些反思來創建。這不是真的DI;只是配置了依賴關係創建。
- 與JNDI之間的東西
- 不知何故,從嵌入了Tomcat的Java程序中,讓Tomcat給我一個Servlet對象的引用,允許我調用它的setter。
- 使用Spring。如果我使用Spring,我會尋找保持輕量級的方法。這個應用程序不夠複雜,不足以保證Spring MVC。
謝謝。有關線程安全性的問題與您應該考慮使用Spring bean網絡沒有什麼不同,對吧? – slim 2013-03-06 10:53:00
你是對的。 – 2013-03-06 10:57:21