Tag: ioc容器

使用Guice注入通用实现

我希望能够使用Guice注入generics接口的通用实现。 public interface Repository<T> { void save(T item); T get(int id); } public MyRepository<T> implements Repository<T> { @Override public void save(T item) { // do saving return item; } @Override public T get(int id) { // get item and return } } 在C#中使用Castle.Windsor,我可以做到 : Component.For(typeof(Repository<>)).ImplementedBy(typeof(MyRepository<>)) 但我不认为在Guice中存在相同的东西。 我知道我可以在Guice中使用TypeLiteral来注册各个实现,但是有没有办法象Windsor一样注册它们? 编辑: 以下是一个使用示例: Injector injector = Guice.createInjector(new MyModule()); Repository<Class1> […]

IoC.Resolve与构造函数注入

我听到很多人说使用IoC.Resolve()是不好的做法,但是我从来没有听说过一个很好的理由(如果是testing而不是模拟容器,那么你就完成了)。 现在使用Resolve而不是Constructor Injection的优点是你不需要在构造函数中创build具有5个参数的类,并且每当你要创build该类的实例时,你都不需要提供它什么

为什么dynamic语言不需要IOC容器?

有人在“羊群规范”播客第68号http://herdingcode.com/?p=231上说,国际奥委会的容器没有Python或Javascript的地方,或者说是这个词的意思。 我假设这是传统的智慧,它适用于所有的dynamic语言。 为什么? 什么是dynamic语言,使IOC容器不必要?

“控制倒置”,“依赖倒置”与“解耦”的区别

我正在读关于依赖倒置和解耦的理论,我看不出两者之间的区别。 依赖倒置说到解耦function组件,以便更高层的组件不依赖于更低层的组件。 脱钩谈论同样的事情,以及如何实现它。 但是,我们有IoC容器 ,更糟的是, 为什么不把它们称为依赖性反转容器,或者更好的dependency injection容器 ,因为它们提供独立组件的运行时耦合? 然后我们有控制反转 。 这与依赖倒置基本上是一样的吗? 为什么有三个术语描述相同的事物? 还是我瞎了? 三者有什么区别? IoC在IoC容器中必须做什么?

为什么MVC4使用服务定位器反模式?

在阅读Mark Seemann的“Dependency Injection in .NET”之后 ,我远离了服务定位器 ,这是一种反模式。 在阅读MVC 4上的发行说明之后,我看到: 通过DependencyResolver改进控制反转(IoC):Web API现在使用由MVC的依赖parsing器实现的服务定位器模式来获取许多不同工具的实例。 因此,我留下了好奇和困惑,为什么微软会在2012年使用服务定位器。

NInject:你在哪里保持你对内核的引用?

我在一个新的Web应用程序上使用NInject,有两件事情我不清楚: 我不需要保持对内核的引用(Session / Appvariables),以确保GC不会收集所有的实例吗? 例如,如果我指定。使用()然后收集内核对象,并不是我所有的“单身”收集? 如果我确实需要保持对内核对象的引用,那么如何让传递给WithArguments()的参数改变或者是不可能的。

在容器build立之后添加服务

是否有可能在运行时注册一个服务,也就是在ContainerBuilder被创build并且Container已经被创build(并且ContainerBuilder处理完毕)后?

spring自我注射

我尝试了Spring 3.x下面的代码,它与BeanNotFoundException失败,它应该根据问题的答案之前,我问 – 我可以使用Spring注入相同的类? @Service public class UserService implements Service{ @Autowired private Service self; } 由于我正在尝试这与Java 6,我发现以下代码工作正常: @Service(value = "someService") public class UserService implements Service{ @Resource(name = "someService") private Service self; } 但我不明白它是如何解决循环依赖。 编辑: 这是错误信息。 OP在对其中一个答案的评论中提到: 由于:org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到符合依赖关系的[com.spring.service.Service]types的匹配bean:期望至less1个符合此依赖关系的autowire候选者。 依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}

主要的C#DI / IoC框架如何比较?

冒着步入圣战疆域的风险,这些stream行的DI / IoC框架的优点和缺点是什么,可以轻易认为是最好的? ..: Ninject 统一 Castle.Windsor Autofac StructureMap 有没有其他的DI / IoC框架的C#,我没有在这里列出? 在我的用例的上下文中,我构build了一个客户端WPF应用程序和一个WCF / SQL服务基础架构,易用性(特别是语法清晰简洁),一致的文档,良好的社区支持和性能都是重要的因素在我的select。 更新: 所引用的资源和重复问题似乎已经过时,能否有一个知道所有这些框架的人出面并提供一些真正的洞察力? 我意识到这个问题上的大多数意见可能是有偏见的,但我希望有人花时间研究所有这些框架,并至less有一个客观的比较。 如果以前没有做过,我很乐意做自己的调查,但是我认为这是至less有一些人已经做了。 第二次更新: 如果您对多个DI / IoC容器有经验,请对这些容器的优缺点进行sorting和总结,谢谢。 这不是发现人们所有的模糊小容器的练习,我正在寻找stream行的(和主动的)框架之间的比较。

自动assembly在spring如何工作?

对于Spring 的控制反转 ( IoC )是如何工作的,我有点困惑。 假设我有一个名为UserServiceImpl的服务类实现了UserService接口。 这将是@Autowired ? 在我的Controllers操作中,我将如何instantiate此服务的一个instance ? 我会做下面的事吗? UserService userService = new UserServiceImpl();