Spring Boot对象的属性

时间:2018-12-20 10:30:02

标签: java spring spring-boot

我有以下配置

job:
  x:
    cron: 0 0 0 1,16 * ?
    group: xg
    name: xn
  y:
    cron: 0 0 1 1,16 * ?
    group: yg
    name: yn

和这样的JAVA POJO

public class JobConfigProperties {
    private String group;
    private String name;
    private String cron;
    ...
}
  

我正在寻找一种让spring boot填充这些类的方法

     

@LoadPropertiesAsObject(prefix =“ job.x”)私有JobConfigProperties   jobXConfig; @LoadPropertiesAsObject(prefix =“ job.y”)私人   JobConfigProperties jobYConfig;

@ConfigurationProperties不起作用,因为它必须附加到类或方法上

稍后编辑:看来@ConfigurationProperties可以应用于方法。我将尝试一下,然后返回结果。

1 个答案:

答案 0 :(得分:1)

您可以在配置类中通过映射添加动态属性。键必须是字符串(属性键),值可以是具有多个变量的复杂类。

@Component
@ConfigurationProperties("job")
public class JobConfigProperties {

  private Map<String, Intern> values;

  public Map<String, Intern> getValues() {
    return values;
  }
  public void setValues(Map<String, Intern> values) {
    this.values = values;
  }

  public static class Intern {

    private String cron;
    private String group;
    private String name;

    public String getCron() {
      return cron;
    }

    public void setCron(String cron) {
      this.cron = cron;
    }

    public String getGroup() {
      return group;
    }

    public void setGroup(String group) {
      this.group = group;
    }

    public String getName() {
      return name;
    }

    public void setName(String name) {
      this.name = name;
    }

  }

}

在您的示例中,必须在“作业”和动态变量之间放置一个“值”元素:

job:
  values: 
    x:
      cron: 0 0 0 1,16 * ?
      group: xg
      name: xn
    y:
      cron: 0 0 1 1,16 * ?
      group: yg
      name: yn

希望有帮助...