在没有任何框架的情况下将依赖项注入Servlet的最佳/最干净的方法

时间:2011-05-05 14:46:53

标签: java servlets jetty

当您不想使用任何类型的DI框架时,将依赖项注入Servlet的最佳方法是什么?我应该将它们放入ServletContext中的ServletContextListener吗?

2 个答案:

答案 0 :(得分:2)

是。您可以在ServletContextListener中初始化它们(如果您需要预先初始化它们),然后将它们放入ServletContext以供您访问的所有servlet。

最好按类名存储对象,以便检索是类型安全的。

Foo foo = servletContext.getAttribute(Foo.class.getName());

答案 1 :(得分:2)

要在servlet中注入一些东西,你需要在另一个类中获取servlet实例。并且你不能这样做,因为getServlet(name)方法已被弃用(并且不起作用)。

因此每个servlet都必须在上下文中手动注册自己。在每个servlet的init()方法中,您可以将自己添加到servlet上下文中的集合:

((List<HttpServlet>) servletContext.getAttribute("servlets")).add(this);

然后,在ServletContextListener中,您可以循环所有已注册的servlet并调用一些setter或用户反射来外部设置依赖项。

但是......这看起来太复杂了,所以你可能会坚持使用new运算符。