我的团队正在研究依赖项注入框架,并试图在使用Google-Guice和PicoContainer之间做出选择。
我们正在寻找框架中的几件事情:
将两个框架与所列标准进行比较将不胜感激。任何有助于将两者进行比较的个人经验也将非常有帮助。
免责声明:我对依赖注入还相当陌生,因此如果我提出的问题与本次讨论无关,请原谅我。
您可能希望将Spring纳入您正在考虑的Dependency Injection框架列表中。以下是您问题的一些答案:
Pico -Pico往往会阻止二传手的注入,但除此之外,您的课程无需了解Pico。只是需要知道的接线(对于所有DI框架都是正确的)。
Guice -Guice现在支持标准的JSR 330注释,因此您不再需要代码中特定于Guice的注释。Spring还支持这些标准注释。Guice伙计们使用的论据是,如果不运行Guice批注处理器,那么如果您决定使用其他框架,则这些不会产生影响。
Spring
-Spring的目的是让您避免在代码中提及Spring框架。因为他们确实有很多其他的帮助器/实用程序等,但是依赖于Spring代码的诱惑非常强烈。
Pico- 我对Pico的速度特性不太熟悉
Guice -Guice设计得很快,参考文献中提到的比较有一些数字。当然,如果速度是主要考虑因素,则应考虑使用Guice或手工接线
春天 -春天会很慢。已经进行了一些工作来使其更快,并且使用JavaConfig库应该可以加快速度。
Pico-易于 配置。Pico可以为您做出一些自动接线决定。尚不清楚它如何扩展到非常大的项目。
Guice-
配置简单,您只需添加批注并继承自AbstractModule即可将事物绑定在一起。由于将配置保持在最低水平,因此可以很好地适应大型项目。
Spring- 相对容易配置,但是大多数示例使用Spring XML作为配置方法。随着时间的推移,Spring
XML文件可能会变得非常庞大和复杂,并且需要花费一些时间来加载。考虑混合使用Spring和手动启动的依赖项注入来克服此问题。
笔克 -小
Guice- 中
春天 -大
Pico- 我在 Pico上 没有太多经验,但是它不是一个广泛使用的框架,因此将很难找到资源。
Guice
-Guice是一个流行的框架,当您有一个要重新开始大量开发的大型项目时,欢迎您关注速度。我担心配置的分布式性质,即不容易看到整个应用程序如何组合在一起。在这方面有点像AOP。
春季
-春季通常是我的默认选择。就是说,XML可能变得很繁琐,并且导致速度变慢。我经常最终将手工制作的依赖注入和Spring结合使用。当您实际上需要基于XML的配置时,Spring
XML相当不错。Spring还付出了很多努力来使其他框架更加依赖于依赖项注入,这很有用,因为这样做时它们经常使用最佳实践(JMS,ORM,OXM,MVC等)。
例如,Foos的资源可能如下所示: 对于酒吧:
从零开始,没有任何以前的Jersey 1.x知识,我很难理解如何在我的Jersey 2.0项目中设置依赖注入。 我也知道HK2在Jersey 2.0中可用,但我似乎找不到有助于Jersey 2.0集成的文档。 我可以让容器启动并提供我的资源,但是当我将@inject添加到MyService时,框架就会抛出一个异常: 我的starter项目可在github:https://github.com/do
我尝试在我的活动中注入修改,但我得到了空异常 这是AndroidApplication类
我正在寻找一种优雅的方式,在标准spring服务中定义字段 如果没有龙目,我们的服务如下: 现在,我们的团队只想使用lombok构造函数(这样我们就可以轻松地添加其他服务)。上面的服务现在看起来是这样的: 如何解决这些问题(在源代码注释中提到)? 我在很多项目中都看到了这个“问题”。我上面提到的变体是我看到的唯一解决方案。当增加字段数量时,这两种解决方案都变得更加丑陋。
问题在于Azure WebJobs SDK只支持公共静态方法作为作业入口点,这意味着无法实现构造函数/属性注入。 我在官方WebJobs SDK文档/资源中找不到有关此主题的任何内容。我遇到的唯一解决方案是基于本文描述的服务定位器(anti)模式。 对于基于Azure WebJobs SDK的项目,有没有一种好方法可以使用“适当的”依赖项注入?
在React中,想做依赖注入(Dependency Injection)其实相当简单。请看下面这个例子: // Title.jsx export default function Title(props) { return <h1>{ props.title }</h1>; } // Header.jsx import Title from './Title.jsx'; export defa