Dependency injection 如何在GoogleGuice 3.0中将转换字符串注入类
我正在尝试使用GoogleGuice3.0实现轻量级DI。我想读取属性并将其转换为类类型,然后注入到类中。这是我的密码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
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上不鼓励只提供链接的答案。两个链接均已断开。感谢您指出这一点。现已修复。