在spring boot中从yaml获取属性列表中的空值

dzjeubhm  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(388)

我正在处理一个服务,并试图从yaml文件中读取属性。即使设置了值,我也会在一些主题中得到一个空值。以下是yaml文件中的属性:

property-combos:
  status:
    - codigo: ATIVA
      descricao: teste 1
    - codigo: CONCLUIDA
      descricao: teste 2
    - codigo: EXPIRADA
      descricao: teste 3

我正在阅读以下课程的roperty:

@Component
@ConfigurationProperties("property-combos")
@Validated
public class StatusProperites {

    @Valid
    protected final List<StatusDataItemProperties> status = new ArrayList<>();

    public List<StatusDataItemProperties> getStatus() {
        return status;
    }
}

这是pojo

@Validated
public class StatusDataItemProperties {

    @NotNull
    protected String codigo;

    @NotNull
    protected String descricao;

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public String getDecricao() {
        return descricao;
    }

    public void setDecricao(String descricao) {
        this.descricao = descricao;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof StatusDataItemProperties)) return false;
        StatusDataItemProperties that = (StatusDataItemProperties) o;
        return Objects.equals(getCodigo(), that.getCodigo()) &&
                Objects.equals(getDecricao(), that.getDecricao());
    }

    @Override
    public int hashCode() {
        return Objects.hash(getCodigo(), getDecricao());
    }
}

这是我从中得到值的部分:

@Component
public class StatusTransacaoComponent {

       private static final Logger LOG = LoggerFactory.getLogger(StatusTransacaoComponent.class);
        private static final String SUCESSO = "000";

        @Autowired
        StatusProperites statusProperites;

        public List<StatusDataItemProperties> getStatusCombo(){
            return statusProperites.getStatus();
        }

    }

问题:问题是当应用程序启动时,属性会被读取,但值如下所示:

codigo: ATIVA
descricao: null

所有这些属性都会发生这种情况
尝试过的解决方案:我´我试图更改变量和属性名,但总是在常量descripao中得到空值。
问题:可能会发生什么,我如何解决这个问题,谢谢。

wa7juj8i

wa7juj8i1#

您在getter和setter中有拼写错误,请更改为以下内容:

public String getDescricao() {
    return descricao;
}

public void setDescricao(String descricao) {
    this.descricao = descricao;
}

如果将此依赖项添加到pom

<dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>

可以使用 @Data 跳过能手/二传手。

4ioopgfo

4ioopgfo2#

您在getdecricao和setdecricao中有代码错误,应该这样更正

public String getDescricao() {
    return descricao;
}

public void setDescricao(String descricao) {
    this.descricao = descricao;
}

相关问题