Java spring-boot アプリケーションの src/main/resources に次の application-errors.yml ファイルが定義されています。
client:
badrequest: {code: 001, message: 'Malformed request', status: 400}
configuration: {code: 002, message: 'Invalid EC2 VPC configuration', status: 400}
server:
unexpected.error:
code: 004
message: 'Unexpected error occurred. Please try again'
status: 500
プロパティを指定するために 2 つの異なる形式を試したことに注意してください。
@Configuration アノテーションが付けられたクラスから、次の Bean を介してそのプロパティ ファイルをロードします。
@Bean
public static YamlPropertiesFactoryBean getYamlProperties() {
YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
yaml.setResources(new ClassPathResource("application-errors.yml"));
return yaml;
}
プロパティが Spring Environment 変数を介してロードされていることがわかりますが、期待したパターンではありません。デバッグを行うと、読み込まれたプロパティ ファイルのソースに次の値が含まれていることがわかります。
{client.badrequest=code:001 message:'Malformed request' status:400, client.configuration=code:002 message:'Invalid EC2 VPC configuration' status:400, server.unexpected.error=code:004 message:'Unexpected error occurred. Please try again' status:500}
yaml ファイルが部分的にフラット化されたようです (深さが 2 レベルのみ)。代わりに、各 end プロパティが独自にフラット化されることを期待していました。私が期待していたフォーマットは次のようなものでした:
{client.badrequest.code=001, client.badrequest.message='Malformed request', client.badrequest.status=400, client.configuration.code=002, client.configuration.message='Invalid EC2 VPC configuration', client.configuration.status=400, server.unexpected.error.code=004, server.unexpected.error.message='Unexpected error occurred. Please try again', server.unexpected.error.status=500}
Spring がプロパティを完全に平坦化するには、何を変更する必要がありますか? yaml フォーマット パターン、または Spring が yaml ファイルを正しくフラット化するために従うパターンのいずれかを理解していない場合は、私の理解を修正してください。