我正在使用使用Yaml进行配置的dropwizard框架。我想在配置文件中指定类名。是否有一种方法可以让Yaml将其解析为Class对象,或者我是否必须使用字符串进行操作? / p>
class Config {
.........
List<Class<?> resourceClasses;
}
YAML file
#resource classes
resourceClasses :
- com.abc.StoresResource
- com.abc.MerchantResource
答案 0 :(得分: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));
}
}
}