java - 通过yaml配置java类对象列表

标签 java yaml dropwizard

我正在使用 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/

相关文章:

rest - POST 嵌套 Json。却变得空虚

java - Swing JTabbedPane 中的外观未更新

java - 如何开始在 Jquery 中使用 DataTable

ssl - Dropwizard 客户端处理自签名证书

yaml - R Markdown 文档中 YAML 列表的处理不一致(与加载 LaTeX 包有关)

yaml - 编织成 PDF 时如何让 amsmath 在 RMarkdown 中工作?

intellij-idea - 如何在 Intellij 中为单元测试指定 Dropwizard 配置文件?

java - 将 JTable 用作 JList

java - Hibernate3、PostgreSQL 8.3 和 Java 5 的 "No suitable driver"问题

azure - 如何将 Azure 与 Github 同步,问题 : Cannot find path 'D:\a\1\s\because it does not exist; Repository not found fetch failed; Filename too long