2015-03-17 8 views
9
project.name=my-project 
base.url=http://localhost:8080 
cas.url=http://my-server:8010/cas 
cas.callback.url=${base.url}/${project.name} 

Zasadniczo chcę użyć powyższych w Spring-boot ConfigurationProperties, ale casCallbackUrl jest zawsze zerowy.@ConfigurationProperties odwołujące się do właściwości, które same odnoszą się do innych właściwości

@Component 
@ConfigurationProperties(prefix = "cas") 
@Getter 
@Setter 
public class CasSettings { 

    @NotBlank 
    private String url; //this is resolved correctly 

    @NotBlank 
    private String callbackUrl; //callbackUrl is null 

} 

aktualizacja

Cóż mam to działa przez camelCasing nazwy własności, ale według documentation powinieneś być w stanie używać notacji dot nazw własności.

od:

cas.callback.url=${base.url}/${project.name} 

do:

cas.callbackUrl=${base.url}/${project.name} 

Dlaczego nie wiosna-boot podniesieniu notacji kropki?

Odpowiedz

2

Kropka reprezentuje oddzielny obiekt w obiekcie właściwości konfiguracji. cas.callback-url będzie działać.

0

Właściwości relaksacyjne sprężynujące nie są swobodnie przekształcane, aby przekształcić właściwości z kropkami w pola wielbłądów. Ale można go łatwo wdrożyć się: obiekt

@Service 
@PropertySource("classpath:git.properties") 
public class MngmntService implements EnvironmentAware { 

    private BuildStatus buildStatus; 
    private static final Logger LOG = LoggerFactory.getLogger(MngmntService.class); 

    @Override 
    public void setEnvironment(Environment env) { 
     RelaxedPropertyResolver pr = new RelaxedPropertyResolver(env, "git."); 
     buildStatus = new BuildStatus(); 
     for (Field field : BuildStatus.class.getDeclaredFields()) { 
      String dotNotation = StringUtils.join(
       StringUtils.splitByCharacterTypeCamelCase(field.getName()), 
       '.' 
      ); 
      field.setAccessible(true); 
      try { 
       field.set(buildStatus, pr.getProperty(dotNotation, field.getType())); 
      } catch (IllegalArgumentException | IllegalAccessException ex) { 
       LOG.error("Error setting build property.", ex); 
      } 
     } 
    } 

    public BuildStatus getBuildStatus() { 
     return buildStatus; 
    } 

nieruchomości:

public class BuildStatus implements Serializable { 

    private String tags; 
    private String branch; 
    private String dirty; 

    private String commitId; 
    private String commitIdAbbrev; 
    private String commitTime; 

    private String closestTagName; 

    private String buildTime; 
    private String buildHost; 
    private String buildVersion; 
    ... 
} 
Powiązane problemy