0

我正在尝试使用 Google Guice3.0 进行轻量级 DI。我想读取属性并将其转换为 Class 类型并注入到一个类中。这是我的代码。

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 {
  //
}

我想将处理程序属性从属性转换为类并将其注入 MyServer。我怎样才能实现它?

提前致谢。

4

1 回答 1

3

就像@gontard 说的那样,这是因为 Guice 已经包含了类转换器。

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

您可以使用 Pluggable Type Converters 添加其他自定义转换器,请参阅 Binder#convertToTypes

默认情况下,您有所有原始类型、枚举和类的转换器。有关实施细节,您可以在此处查看

于 2013-03-15T13:34:41.463 回答