添加guice到现有的应用程序

时间:2011-12-22 20:42:48

标签: java guice

我想在具有遗留代码的现有应用程序中开始使用guice。关于如何开始这样做,是否有任何指针和BKM? 我找到了一种方法here,并希望获得更多信息和详细信息 谢谢!

编辑:关于我的应用程序的更多细节:它是一个服务器应用程序,它运行在一个自制的服务器应用程序中,所以没有涉及到gui。它有很多遗留代码,我怀疑是否/如何迁移它。

2 个答案:

答案 0 :(得分:4)

您的策略取决于您的应用程序今天的构建方式。如果你过分使用单身人士或其他一些框架。我已经做了很多从没有框架到Spring或Guice之类的移植应用程序。这不是一项容易的任务,您在这方面取得的成功在很大程度上取决于代码的数量,团队中有多少人以及团队接受构建应用程序的新方法的程度。如果你没有从你的团队购买,那么我会在尝试编码之前从那里开始。说服人们对您的应用愿景,回答他们的问题,允许他们设计一点,并欢迎他们的意见。如果他们有很大的顾虑,允许他们发表意见,如果你没有解决方案承认它,然后回去设计一个,然后展示它。重复一遍,直到你拥有所有人。

现在移植代码。这取决于您拥有的应用程序类型:基于Web,桌面等。但是,通常当我移植这些东西时,我会创建一个空项目,并按照您与团队设计的方式进行设置。然后开始将长寿命物体拉到容器中。单身人士是一个很好的起点,因为他们通常会在整个申请期间生活。开始在容器中实例化它们而不是它们的getInstance()方法。你可能不得不打破单例模式并暴露他们的构造函数,但最终你想要摆脱单身。你可以保持静态参考。当您将对象拉过重构时,使用getInstance()来使用它们通过实例变量/ getter / setter给出的引用。

慢慢地,您应该可以从Guice容器中执行应用程序。也许你此时只移植了部分应用程序。保持逐个移植部分并在容器中测试它们。在这一点上,你已经有了足够的基础,你可以从其他团队成员那里获得帮助。最终你将移植整个应用程序,现在你可以开始重构它的一部分以使用Guice方式。返回并消除静态引用,并尽可能调用getInstance()。

我总是发现设置一个框架并移植而不是重构,以便更有效地处理这些类型的转换。全力以赴地开展新工作也很关键,最终会为你节省很多心痛。我已经尝试过不停止新工作了,这些类型的转换可以拖出许多版本,因为团队以传统方式继续使用新代码。有时在下一个版本开始实际工作之前的平静期内新版本之后开始可以给你额外的提升,这样你就可以达到其他成员可以帮助你移植的地步,因为你已经设置了骨架。

还记得管理层。如果他们只需要新功能,那么您将很难控制团队。如果他们不接受你的努力,他们就会很难完成。

答案 1 :(得分:3)

期待混淆一段时间。反正我也是。我喜欢Guice主页上的video

我认为将Guice或任何依赖注入框架合并到您的应用程序中的准确描述就像在毛衣中拉一个线程而从未真正找到结束。我的意思是,它可以改变你在应用程序的几个方面的方法。例如,从servlets到jdbc框架(我们使用mybatis-guice),到单元测试(查看jukito)。

Guice user group是一个很好的资源。

不要指望一次完成所有操作。完全开发Guice方式可能需要一些时间。