java – Guice inject.getInstance() – 良好的做??法?
假设我有两个共享相同库的应用程序.该库包含常见的类,如DAO,Utils等.共享库中的所有内容都与Guice连接.我的两个应用依赖于这个库,但没有直接依赖于Guice.
______ ______ ______ | | | | | | | APP1 |->| LIB |<-| APP2 | '------' '------' '------' 我目前使用这样的东西: static <T> Utils.getInstanceOf (Class<T> type); 这只是一个包装: injector.getInstance (Class<T> type); 但是,guice文件说:
那么,为两个应用程序提供依赖注入的最佳方式是什么,而不必在Guice模块中手动绑定它们? 解决方法
没有这样的方式.您完全接受Guice或者不使用它,并明确传递您的依赖项.那么,以这样的方式构造你的代码,所以你永远不会直接创建类依赖,而是通过构造函数传递它们,也可以称为“依赖注入”,但我确定这不是你的意思.如果你不想在你的应用程序中使用Guice,那么你将无法获得比getInstance()更好的东西,这是比较丑的,特别是因为你使用静态包装器. 理想情况下,您的库应该提供一个可以在应用程序中通过Guice.createInjector()安装的模块,或者另一方面,库应该提供一个Injector实例,您可以通过使用createChildInjector()和提供应用程序特定的模块.这种方法的轻微修改是将应用程序特定的模块传递到库,以便它们用于创建Injector.最近我已经编写了基于guice的API,而不是使用最后一种方法来支持任何类型的DI,而且它工作正常. 在servlet或泽西环境中使用Guice并不是很难.例如,后者与Guice具有开箱即用的集成(至少在1.x版本中). Guice servlet extension也很好,方便.只要试一下,看看自己. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |