当您不想使用任何类型的DI框架时,将依赖项注入Servlet的最佳方法是什么?我应该将它们放入ServletContext
中的ServletContextListener
吗?
答案 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
运算符。