我经常阅读关于依赖注入的内容,我在google上做过研究,理论上它理解它可以做什么以及它是如何工作的,但是我希望看到一个使用它的实际代码库(Java / guice会更受欢迎) 。
有人能指出我是一个开源项目,在那里我可以看到,它是如何真正使用的?我认为浏览代码并查看整个设置对我来说比在网络上找到的介绍文章中的ususal片段更多。提前谢谢!
答案 0 :(得分:6)
Wave Protocol Server是我最喜欢的示例应用。
答案 1 :(得分:3)
我在这个问题上有点挣扎。这是如此抽象和简单,我总是担心我“做错了”。
我一直在主项目中使用它,它依赖于其他项目,因为设置绑定的Guice模块是主项目的一部分。
我终于意识到库应该自己提供模块。此时,您只能依赖于模块的实例(不是特定的实例)以及由其绑定的接口。
更进一步,您可以使用Java 6中的新ServiceLoader机制自动定位和安装类路径上可用的所有Guice模块。然后你可以通过改变类路径来交换依赖关系(db-real.jar与db-mock.jar)。
答案 2 :(得分:1)
我知道你在Java领域,但在.NET领域,有几个使用控制容器反转编写的开源应用程序。查看CodeCampServer,其中UI模块没有对依赖项解析模块的引用。有一个HttpModule可以完成这项工作。 (HttpModule只是一个可插入的外部库,用于处理ASP.NET中的事件,在CodeCampServer中,UI项目在运行时加载此DependencyRegistrarModule,没有任何编译时引用。)
答案 3 :(得分:-1)
我认为依赖注入有一种从视图中消失的方法,如果使用得当,它只是初始化/连接应用程序的一种方式 - 如果它看起来比你可能正在寻找框架的额外功能更加花哨手,而不是赤裸裸的依赖注射。
编辑:我建议实际上开始使用它而不是试图找到示例,然后回过头来发布问题,如果你不能像你认为的那样得到工作: - )