2013-03-15 62 views
0

我正在嘗試用於輕量級DI的Google Guice3.0。我想閱讀屬性並將其轉換爲Class類型並注入一個類。這是我的代碼。如何將字符串轉換爲Google Guice 3.0中的類

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。我怎樣才能實現它?

在此先感謝。

+0

我用guice 3.0試試這個代碼,它工作。你有錯誤嗎? – gontard 2013-03-15 09:23:52

回答

3

就像@gontard所說的,這個工作原因是Guice已經包含了類的轉換器。

它使用Class.forName(fqn)來獲取類。

您可以使用Pluggable Type Converters see Binder#convertToTypes添加其他自定義轉換器。

默認情況下,您擁有所有基元類型,枚舉和類的轉換器。有關實施細節,您可以看到here

+0

第一個鏈接被破壞 - 這就是爲什麼在StackOverflow上不鼓勵鏈接的答案 – 2017-12-04 13:04:46

+0

這兩個鏈接都被破壞了。感謝您指出了這一點。現在修復。 – 2017-12-05 13:33:35