Spring Bootシリーズ5 Spring@Value属性注入使用総括2
1.@Value注入二
前回の記事ではSpring@Value属性注入の使用概要を紹介します.文章を読んでから、迷うかもしれません.この文章は,私たちはこの問題を解決しようとしている.
1.1前提
テスト属性ファイル:advance_value_inject.properties
使用法{}の内容はSpEL式に適合していなければなりません.詳細な文法は今後、新しい文章紹介を専門に開くことができます.@Value('{spelDefault.value})を通じて属性ファイルに対応する値を取得できますが、属性ファイルにこの属性がないとエラーが発生します.この問題はデフォルト値を付与することによって解決できます.
詳細コードは以下の通りです.
結び目菗氨{…}はSpEl表現を実行するために使用され、内容を属性 に値付けします.ドル(...)は、主に外部属性ファイルの値 をロードするために使用されます.菘{…}と${}は混合して使用することができますが、 が必要です.
2.コード
上記のコードはGithubを参照してください.
前回の記事ではSpring@Value属性注入の使用概要を紹介します.文章を読んでから、迷うかもしれません.この文章は,私たちはこの問題を解決しようとしている.
1.1前提
テスト属性ファイル:advance_value_inject.properties
server.name=server1,server2,server3
#spelDefault.value=notdefault
HelloWorld_=sss
テストクラスAdvance Value Inject:advanceを導入する.value_inject.propertiesファイルは、属性の注入として@Component
@PropertySource({"classpath:com/hry/spring/configinject/advance_value_inject.properties"})
public class AdvanceValueInject {
...
}
1.2匁{…}と${…}使用法{}の内容はSpEL式に適合していなければなりません.詳細な文法は今後、新しい文章紹介を専門に開くことができます.@Value('{spelDefault.value})を通じて属性ファイルに対応する値を取得できますが、属性ファイルにこの属性がないとエラーが発生します.この問題はデフォルト値を付与することによって解決できます.
@Value("${spelDefault.value:127.0.0.1}")
のように.詳細コードは以下の通りです.
// spelDefault.value,
// @Value("${spelDefault.value}")
// private String spelDefault2;
// default.value ,
@Value("${spelDefault.value:127.0.0.1}")
private String spelDefault;
すみません、ここでは簡単な使い方しか見せません. // SpEL: Hello World concat
@Value("#{'Hello World'.concat('!')}")
private String helloWorld;
// SpEL: getBytes , length
@Value("#{'Hello World'.bytes.length}")
private String helloWorldbytes;
${…}と菗との混合使用は、以下のコードの実行順序:属性ファイルから$server.nameを介して値を取得して置換し、その後、SpEL式{server 1,server 2,server 3’.split(')}を実行することになります. // SpEL: , "," , #{} ${} ( , ${} ,#{} )
@Value("#{'${server.name}'.split(',')}")
private List<String> servers;
上記では${...} #{...}
で成功することができますが、コードのように逆に可能ですか? // SpEL: ${} ,#{} ,
@Value("${#{'HelloWorld'.concat('_')}}")
private List<String> servers2;
答えはできません.スプリング実行だから、{}タイミングが早いです.この例では、Springは、属性の中から『Hello World』.concat(‘_’)を検索することを試みているので、上記で知られていますが、見つけられなければ、エラーを報告します.したがって、#{} ,${}
は不法操作です.結び目
${} ,#{}
2.コード
上記のコードはGithubを参照してください.