标签: guice

具有多个实现的Guice和接口

如果我有接口Validator和这个接口的多个实现.如何使用Guice注入任何多个实现?现在我知道我可以使用以下代码注入一个,但它只允许一个实现:

public class MyModule extends AbstractModule {
  @Override 
  protected void configure() {
    bind(Validator.class).to(OneOfMyValidators.class);
  }
}
Run Code Online (Sandbox Code Playgroud)

我想做的是:

Validator v1 = injector.getInstance(Validator1.class);
Validator v2 = injector.getInstance(Validator2.class);
Run Code Online (Sandbox Code Playgroud)

有可能吗?

java guice

16
推荐指数
3
解决办法
2万
查看次数

Guice - 如何通过多个喷射器/模块共享同一个Singleton实例

在guice中,@ Singleton范围不涉及Singleton模式.

根据"Dhanji"的"依赖注入"一书:

很简单,单例的上下文就是注入器本身.单身的寿命与注射器的寿命有关(如图5.8所示).因此,每个注射器只创建一个单例实例.重要的是要强调最后一点,因为多个喷射器可能存在于同一应用中.在这种情况下,每个注入器将保存单例范围对象的不同实例.

单身范围

是否可以通过多个模块和多个喷射器共享同一个Singleton实例?

java singleton dependency-injection guice

16
推荐指数
1
解决办法
1万
查看次数

使用Google Guice注入java属性

我想使用google guice在我的应用程序的所有类中提供属性.我定义了一个模块,它加载和绑定属性文件Test.properties.

Property1=TEST
Property2=25
Run Code Online (Sandbox Code Playgroud)

package com.test;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;

import com.google.inject.AbstractModule;
import com.google.inject.name.Names;

public class TestConfiguration extends AbstractModule {

    @Override
    protected void configure() {
    Properties properties = new Properties();
    try {
        properties.load(new FileReader("Test.properties"));
        Names.bindProperties(binder(), properties);
    } catch (FileNotFoundException e) {
        System.out.println("The configuration file Test.properties can not be found");
    } catch (IOException e) {
        System.out.println("I/O Exception during loading configuration");
    }

    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用一个主类,我创建一个注入器来注入属性.

package com.test;

import com.google.inject.Guice;
import com.google.inject.Injector;

public class Test {

    public …
Run Code Online (Sandbox Code Playgroud)

java properties guice

16
推荐指数
1
解决办法
3万
查看次数

Guice的@ImplementedBy邪恶?在某些情况下是否合适?

我听说过" @ImplementedBy是邪恶的",理由是它打破了DI概念并让界面意识到它的实现者.

在某些情况下可能会出现这种情况,但我经常发现它只会导致更清晰的代码(没有很长的模块可以维护),而不会真正伤害过程中的任何内容.

作为语用学,而不是纯粹主义者,你认为什么时候使用@ImplementedBy是值得的?

java guice

15
推荐指数
3
解决办法
4314
查看次数

在java中使用TypeLiteral

请提供一些有关如何TypeLiteral使用Google Guice或Java EE的基本信息,如果使用简单的代码解释它将会非常有用,提前感谢

java guice java-ee

15
推荐指数
1
解决办法
1万
查看次数

如何扫描类注释?

我有一个简单的jane servlets Web应用程序,我的一些类有以下注释:

@Controller
@RequestMapping(name = "/blog/")
public class TestController {
..

}
Run Code Online (Sandbox Code Playgroud)

现在,当我的servlet应用程序启动时,我想获得所有具有@Controller注释的类的列表,然后获取@RequestMapping注释的值并将其插入字典中.

我怎样才能做到这一点?

我也使用Guice和Guava,但不确定是否有任何与注释相关的助手.

java servlets guice guava

15
推荐指数
3
解决办法
4万
查看次数

我应该将Spring或Guice用于Tomcat/Wicket/Hibernate项目吗?

我正在构建一个使用Linux,Apache,Tomcat,Wicket,JPA/Hibernate和MySQL的新Web应用程序.我的主要需求是依赖注入,Spring和Guice都可以做得很好.我想我需要Spring和JTA带来的事务支持,但我不确定.

该网站可能有大约20页,我不希望有大量的流量.

我应该使用Spring还是Guice?

随意提问和后续问题,我会尽力更新.

spring wicket jpa guice

14
推荐指数
3
解决办法
5064
查看次数

Guice:Binder#bindConstant()和Binder#bind()... toInstance之间的区别

我想问一下有什么区别

bindConstant().annotatedWith(Names.named("keepAliveInterval")).to(60);
Run Code Online (Sandbox Code Playgroud)

bind(Integer.TYPE).annotatedWith(Names.named("keepAliveInterval")).toInstance(60);
Run Code Online (Sandbox Code Playgroud)

我想用Names.bindProperties(binder(),prop)加载我的所有配置属性; 在我的模块中,我发现它使用后者来绑定属性.

感谢和问候

马雷克

java config constants guice

14
推荐指数
1
解决办法
1万
查看次数

Guice注入空指针

我们尝试用Guice重构一个项目.我们的想法是将所有语言界面绑定到一个像法语波兰语这样的混合对象.

我们有一个绑定模块:

public class StandardModule extends AbstractModule {

    @Override
    protected void configure() {

       bind(Language.class).to(Polish.class);

    }
 }
Run Code Online (Sandbox Code Playgroud)

以及使用此注入对象的classe(AboutDialog.java):

@Inject Language language;

public AboutDialog(JFrame parent) {
    super(parent, "", true);
    this.language=language;
    this.setTitle(language.getLanguageInUse().getString("AboutDialog.title"));
    this.parent = parent;
    try {
        jbInit();
    } catch (Exception e) {
        e.printStackTrace();
    }
    pack();
}
Run Code Online (Sandbox Code Playgroud)

我们有结果:

java.lang.NullPointerException at net.sf.jmoney.gui.AboutDialog.<init>(AboutDialog.java:67)
Run Code Online (Sandbox Code Playgroud)

第67行是:

this.setTitle(language.getLanguageInUse().getString("AboutDialog.title"));
Run Code Online (Sandbox Code Playgroud)

我们的界面是:

public interface Language {

    public ResourceBundle getLanguageInUse();
}
Run Code Online (Sandbox Code Playgroud)

波兰语课程是:

public class Polish implements Language {

    private ResourceBundle languageInUse;

    public Polish() {
        languageInUse = …
Run Code Online (Sandbox Code Playgroud)

java guice code-injection nullpointerexception

14
推荐指数
2
解决办法
2万
查看次数

Guice的辅助注入已经配置好了

我有一个AssistedInject的问题.我按照此链接上的说明 https://github.com/google/guice/wiki/AssistedInject 但是当我运行我的应用程序时出现错误:

ERROR [2015-04-23 14:49:34,701] com.hubspot.dropwizard.guice.GuiceBundle: Exception occurred when creating Guice Injector - exiting
! com.google.inject.CreationException: Unable to create injector, see the following errors:
!
! 1) A binding to java.lang.String annotated with @com.google.inject.assistedinject.Assisted(value=) was already configured at com.demo.migrator.service.democlient.DemoAPIFactory.create().
!   at com.demo.migrator.service.democlient.DemoAPIFactory.create(DemoAPIFactory.java:1)
!   at com.google.inject.assistedinject.FactoryProvider2.initialize(FactoryProvider2.java:577)
!   at com.google.inject.assistedinject.FactoryModuleBuilder$1.configure(FactoryModuleBuilder.java:335) (via modules: com.demo.migrator.MigrationModule -> com.google.inject.assistedinject.FactoryModuleBuilder$1)
Run Code Online (Sandbox Code Playgroud)

这是我的模块配置:

install(new FactoryModuleBuilder()
    .implement(DemoAPI.class, DemoClient.class)
    .build(DemoAPIFactory.class));
Run Code Online (Sandbox Code Playgroud)

这是我工厂的样子:

 public interface DemoAPIFactory {
   DemoAPI create(String _apiKey, String _secretKey);
 }
Run Code Online (Sandbox Code Playgroud)

接口声明如下:

public interface DemoAPI {
   //list of interface methods …
Run Code Online (Sandbox Code Playgroud)

java dependency-injection guice assisted-inject

14
推荐指数
1
解决办法
6624
查看次数