私のapplication.yml
ファイルには次のように宣言されています。
service:
a:
b: 011600
c: 011200
注釈を.yml
介して値を選択する@Value
:
@Value("${service.a.c}")
private String VALUE;
予想される「011200」の代わりに、.ymlに記載されていない「4992」が表示されます。
ドキュメントのYAMLのバージョンを指定していません。パーサーのデフォルトはバージョン1.1(またはバージョン1.1の互換性)になっているようです。これにより、0で始まり、数字が続く値は8進数として解釈され、011200
(8進数)の値は4736
(10進数)、011600
(8進数)の値は4992
です。
YAML 1.2において、進整数値で始まる必要がありOo
、したがって、011200
整数になり11200
使用してみてください:
%YAML 1.2
---
service:
a:
b: 011600
c: 011200
それでも目的の値が得られない場合は、準拠したYAMLパーサーの使用を検討する必要があります(YAML 1.2仕様は2009年のものであるため、適切に処理するための十分な時間があります)。
もちろん、整数スカラーを引用することもできますが、そうすると、整数ではなく文字列としてロードされます。その場合、バージョンタグを指定する必要はありません。バージョン1.2と1.1はどちらも同じように解釈します。
service:
a:
b: '011600'
c: '011200'
ファイルで指定した10進値を取得した後でも、間違った値を取得する@Value("${service.a.c}")
場合は、別のアクセス方法(キーにドットがある場合に機能するもの(例serv.ice:
)、または別の方法)の使用を検討する必要があります。パーサー。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加