如何重构我的servlet以利用依赖注入?

时间:2012-02-13 21:50:11

标签: java servlets dependency-injection

我正在使用Tomcat 6.0.33和Java 6.我有这个servlet ...

public class SaveXmlServlet extends HttpServlet {

private CacheService cacheService;

public void init(ServletConfig config) throws ServletException {
    cacheService = CacheServiceLocator.cacheService();
}   // init

如何将我的servlet重新设计为...

  1. 利用依赖注入,以便像mockito这样的模拟框架可以注入自己的“cacheService”实现
  2. 保证jvm中只有一个cacheservice实例。现在,行“CacheServiceLocator.cacheService()”保证了这一点。
  3. ?我没有使用(或允许使用)像Spring或Guice这样的框架。感谢有关重构这一点的任何想法。谢谢, - 戴夫

1 个答案:

答案 0 :(得分:1)

有一些选择,虽然我建议打人,不要“让”你使用框架。两个快速;我确定还有其他人。我先去打屁股。

您可以使用EasyMock / Mockito和PowerMock的组合来模拟静态类。从技术上讲,你根本不需要改变任何东西来获得你想要的测试中的行为。

servlet init参数或JNDI资源提供的类名可用于创建缓存定位器的实例。为其提供设定器允许单元/等。测试将其设置在课堂上。