我正在使用 dropwizard 框架,该框架使用 Yaml 进行配置。我想在配置文件中指定类名。有没有一种方法可以让 Yaml 将其解析为类对象,或者我必须使用字符串来执行此操作?
class Config {
.........
List<Class<?> resourceClasses;
}
YAML file
#resource classes
resourceClasses :
- com.abc.StoresResource
- com.abc.MerchantResource
最佳答案
您只是在寻找一种便捷的方式来注册资源,还是确实想在 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));
}
}
}
关于java - 通过yaml配置java类对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26001175/