我是Guice的新手,正在尝试在下面的类族中实现依赖注入,如下所示:
class DoSomethingServlet {
@Inject
IProvider provider;
}
interface IProvider {
}
@Singleton
class Provider implements IProvider {
@Inject
@Named("B")
IManager manager;
}
interface IManager {
}
class Manager implements IManager {
@Inject
@Named("B")
IDAO dao;
@Inject
@Named("B")
IConverter converter;
}
interface IDAO {
}
class DAO implements IDAO {
}
interface IConverter {
}
class Converter implements IConverter {
}
import com.google.inject.AbstractModule;
class DoSomethingModule extends AbstractModule {
@Override
protected void configure() {
bind(IProvider.class).to(Provider.class);
bind(IManager.class).annotatedWith(Names.named("B"))
.to(Manager.class);
bind(IDAO.class).annotatedWith(Names.named("B")).to(DAO.class);
bind(IConverter.class).annotatedWith(Names.named("B"))
.to(Converter.class);
}
}
然而,有一些问题,由于我的请求没有成功。
IDAO dao = new DAO();
IConverter converter = new Converter();
您能否帮助我发现问题,并让我知道您是如何调试Guice中的依赖注入问题的?
您需要通过Guice绑定servlet。为此,您需要遵循以下步骤。
创建一个Servlet模块来添加Servlet绑定。
public class YourServletModule extends ServletModule {
@Override
protected void configureServlets() {
serve("YOUR SERVLET URL").with(DoSomethingServlet.class);
bind(DoSomethingServlet.class).in(Singleton.class);
}
}
如果不想创建单独的模块,还可以将servlet映射添加到已经创建的模块中,但需要从ServletModule派生模块。
public class YourContextListener extends GuiceServletContextListener{
@Override
public Injector getInjector(){
return Guice.createInjector(new DoSomethingModule(),new YourServletModule());
}
}
<listener>
<listener-class>qualified class name of YourContextListener</listener-class>
</listener>
将guice过滤器添加到web.xml以将过滤器映射到servlet url模式。
<filter>
<filter-name>guiceFilter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>guiceFilter</filter-name>
<url-pattern>YOUR SERVLET URL</url-pattern>
</filter-mapping>
我想引导一系列处理元素,并通过Guice将它们连接在一起。让我们假设以下路径: 需要一些输入 由实现需要 由实现需要 由实现需要 的依赖关系只能在运行时解决,而不能在配置时解决。通常的方法是在这种情况下使用辅助注入来创建工厂,该工厂将缺少的实例作为参数,如下所示: 但我真正想要的是这样的: 我不想在整个层次结构中手动传递AImpl的特定依赖项。使用Guice可以实现这一点吗?如果没有,在保持注射的
有人能帮助实现没有注释的Guice吗? pom。xml 我所尝试的: 我得到的错误是: 我理解这个错误。 但是我希望我可以“指向”Guice到正确的构造函数......而不是使用注释。 如您所见,使用默认/空构造函数不是一个好选择,因为这个示例很简单,但我想坚持使用基于构造函数的注入。 附加: 根据我在评论中从赫曼特·辛格那里得到的“暗示”,我想我离得更近了。 我创建了一个ProductionIn
主要内容:输出注入是将依赖注入对象的过程。构造函数注入很常见。在这个过程中,依赖被作为参数注入到构造函数中。请参阅下面的示例。 创建一个名为 GuiceTester 的 Java 类。 GuiceTester.java 输出 编译并运行该文件,您将看到以下输出。
我在注释中创建一些元数据结构时遇到了问题。我们使用注释来定义Hibernate实体属性的特殊属性,但它可能在任何地方都可以使用。我想创建表示这些结构的条件: 问题是我需要使用此注释定义一些“树”结构。这是我想达到的一些设计: 我想根据这个例子使用的所有这些注释: 我知道我在上面的注释定义中定义的那种继承是不可能的。但是,我该如何考虑我的注释和,或是在一个“家庭”中?
我有以下实现,我正在尝试在Guice中注入 这是我的注入代码Injector guice=Guice. Injector();guice.get实例(SomeClass.class); 但我不断地得到错误: 在hello.package.helloworld.客户端中找不到合适的构造函数。类必须有一个(并且只有一个)用@Inject注释的构造函数或一个非私有的零参数构造函数 如何注入一个已经有参数
我正在使用 scala play 2.5,在尝试在我的一个控制器中注入对象时出现以下错误。我正在使用 play 给出的默认注入框架,即 Guice。 这是控制器: 以下是我想注入的服务: 这就是我使用它的方式: