Dependency injection 如何在GoogleGuice 3.0中将转换字符串注入类

Dependency injection 如何在GoogleGuice 3.0中将转换字符串注入类,dependency-injection,guice,Dependency Injection,Guice,我正在尝试使用GoogleGuice3.0实现轻量级DI。我想读取属性并将其转换为类类型,然后注入到类中。这是我的密码 setting.properties port = 31200 handler=com.mypackage.handler.MyHandler Module public class MyModule extends AbstractModule { @Override protected void configure() { Propert

我正在尝试使用GoogleGuice3.0实现轻量级DI。我想读取属性并将其转换为类类型,然后注入到类中。这是我的密码

setting.properties
port = 31200
handler=com.mypackage.handler.MyHandler

Module
public class MyModule extends AbstractModule {

    @Override
    protected void configure() {
        Properties properties = new Properties();
        try {
            properties.load(getClass().getResourceAsStream("setting.properties"));
            Names.bindProperties(binder(), properties);

        } catch (IOException e) {
            e.printStackTrace();
        } 

    }

}

@Singleton
public class MyServer {

     @Inject @Name("port") int port;

     @Inject @Name("handler") Class<? extends BaseHandler> handlerClass; 
}

public interface BaseHanlder {
   //
}

public MyHandler implements BaseHandler {
  //
}
setting.properties
端口=31200
handler=com.mypackage.handler.MyHandler
模块
公共类MyModule扩展了AbstractModule{
@凌驾
受保护的void configure(){
属性=新属性();
试一试{
load(getClass().getResourceAsStream(“setting.properties”);
name.bindProperties(binder(),properties);
}捕获(IOE异常){
e、 printStackTrace();
} 
}
}
@独生子女
公共类MyServer{
@注入@Name(“端口”)int-port;

@注入@Name(“handler”)类就像@gontard所说的,这是因为Guice已经包含了类的转换器

它使用Class.forName(fqn)获取类

您可以使用添加其他自定义转换器


默认情况下,您拥有所有原语类型、枚举和类的转换器。有关实现的详细信息,您可以查看。

就像@gontard所说的,这可以工作,因为Guice已经包含类的转换器

它使用Class.forName(fqn)获取类

您可以使用添加其他自定义转换器


默认情况下,所有基元类型、枚举和类都有转换器。有关实现的详细信息,请参见。

我使用guice 3.0尝试此代码,结果正常。您是否收到错误?我使用guice 3.0尝试此代码,结果正常。您收到错误吗?第一个链接已断开-这就是为什么StackOverflow上不鼓励仅链接回答的原因nks已断开。感谢您指出这一点。现已修复。第一个链接已断开-这就是为什么StackOverflow上不鼓励只提供链接的答案。两个链接均已断开。感谢您指出这一点。现已修复。