I have a application.properties:

app.cert.identity.subject.organizationalUnit=test
app.cert.identity.subject.O=Pacific College

And an DTO:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;

@ConfigurationProperties(prefix = "app.cert.identity")
public class IdentityCertificateDefinition {

  @NestedConfigurationProperty
  private Subject subject;

  public Subject getSubject() {
    return subject;
  }

  public void setSubject(Subject subject) {
    this.subject = subject;
  }

  public static class Subject {

    private String organizationalUnit;    //Does work

    @Value("${O}")    //Does NOT work, will be null
    private String organization;

    public String getOrganizationalUnit() {
      return organizationalUnit;
    }

    public void setOrganizationalUnit(String organizationalUnit) {
      this.organizationalUnit = organizationalUnit;
    }

    public String getOrganization() {
      return organization;
    }

    public void setOrganization(String organization) {
      this.organization = organization;
    }
  }
}

The `@Value("${O}") marked on does not work: SpringBoot Spring @Value doesn't work in nested configuration

Comment From: wilkinsona

@Value and @ConfigurationProperties should not be mixed. If you remove @Value and change app.cert.identity.subject.O to app.cert.identity.subject.organization it should work. Alternatively, you could rename getOrganization and setOrganization to getO and setO.