Spring-Bootプロジェクトに以下のプロパティクラスがあります。
@Component
@ConfigurationProperties(prefix = "myprefix")
public class MyProperties {
private String property1;
private String property2;
// getter/setter
}
ここで、property1
のapplication.propertiesファイルで、デフォルト値を他のプロパティに設定したいと思います。以下の例と同様に@Valueを使用します
@Value("${myprefix.property1:${somepropety}}")
private String property1;
property
のデフォルト値として「デフォルト値」が割り当てられている以下の例のように、静的な値を割り当てることができることはわかっています。
@Component
@ConfigurationProperties(prefix = "myprefix")
public class MyProperties {
private String property1 = "default value"; // if it's static value
private String property2;
// getter/setter
}
私のデフォルト値が別のプロパティである春のブートで@ConfigurationPropertiesクラス(むしろタイプセーフな構成プロパティ)を使用してこれを行う方法は?
MyPropertiesクラスの@PostContructを使用してproperty1が設定されているかどうかを確認します。そうでない場合は、別のプロパティに割り当てることができます。
@PostConstruct
public void init() {
if(property1==null) {
property1 = //whatever you want
}
}
Spring-Boot 1.5.10(およびおそらくそれ以前)では、デフォルト値の設定は提案された方法で機能します。例:
@Component
@ConfigurationProperties(prefix = "myprefix")
public class MyProperties {
@Value("${spring.application.name}")
protected String appName;
}
@Value
defaultは、独自のプロパティファイルでオーバーライドされていない場合にのみ使用されます。