2014-09-23 154 views
1

我使用的是使用Yaml進行配置的dropwizard框架。我想在配置文件中指定類名稱。是否有方法將Yaml解析爲Class對象,或者是否必須使用字符串來做到這一點?通過yaml配置java類對象列表

class Config { 

    ......... 

    List<Class<?> resourceClasses;  
} 

YAML file 

#resource classes 
resourceClasses : 
     - com.abc.StoresResource 
     - com.abc.MerchantResource 

回答

0

你只是在尋找一種方便的方式來註冊你的資源,或者你真的想在YAML配置中配置資源嗎?如果是前者,這是我會做的:

for (ClassInfo classInfo: ClassPath.from(getClass().getClassLoader()).getTopLevelClasses("com.abc")) { 
    environment.jersey().register(i.getInstance(classInfo.load())); 
} 

如果是後者,你必須自己解析這些字符串。我不認爲YAML配置會爲你做到這一點。請問像這樣的工作:

class Config { 
    List<Class<?>> resourceClasses = new ArrayList<Class<?>>(); 

    @JsonProperty("resourceClasses") 
    public void setResourceClasses(Collection<String> classNames) throws ClassNotFoundException { 
    for (String className : classNames) { 
     resourceClasses.add(Class.forName(className)); 
    } 
    }  

} 
+0

我想聲明的申請我們公司的事務日誌框架上的某些資源classes.So是後者 – 2014-09-23 19:05:12

+0

添加了後者的一個例子 - 看是否適合你的目的。 – condit 2014-09-23 19:23:47