SpringのMessageSource
を使用して、クラスパスの.properties
ファイルからエラーメッセージをロードしています。私のプロパティは、{Object}.{field}.{unrespectedConstraint}
などの特定の「テンプレート」を尊重します。例:
userRegistrationDto.password.Size= Le mot de passe doit avoir au minimum 6 caractères.
userRegistrationDto.email.ValidEmail= Merci de saisir une addresse mail valide.
リファクタリング(クラスの名前の変更など)の場合、いくつかの場所でプロパティファイルを変更する必要があります。
Yamlファイル(messages.yml)をResourceBundleとして使用して、次のようなものを取得する方法はありますか?
userRegistrationDto:
password:
Size: Le mot de passe doit avoir au minimum 6 caractères.
email:
ValidEmail: Merci de saisir une addresse mail valide.
VM操作中にMessageSourceを再読み込み可能にする必要がある場合は、もう少し掘り下げる必要があるかもしれません。これで要件を満たせると思います。
@Configuration
public class TestConfig {
@Bean(name = "testProperties")
public Properties yamlProperties() throws IOException {
YamlPropertiesFactoryBean bean = new YamlPropertiesFactoryBean();
bean.setResources(new ClassPathResource("test.yml"));
return bean.getObject();
}
@Bean
public MessageSource messageSource() throws IOException {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setCommonMessages(yamlProperties());
return messageSource;
}
}
私が見つけた最良の解決策は、@ vtoshによって私の前に見つかりました:使用する このライブラリ 。唯一の問題は(それでも)それが十分に人気がないということです。
他のオプションは、Javaローカリゼーションサポートを手動でResourceBundle.Control
クラスを拡張することです(公式の例を見つけることができます ここ )です。しかし、私はしません@vtoshが見つけたライブラリはこのアプローチを使用しているため、多くの意味があります。
なぜ春の解決策がないのですか?さて、あなたが見つけることができる答え このjira 。それはまだオープン状態なので、少なくとも今のところ、彼らの側からの解決策になるとは思っていません。