Java 如何将另一个属性文件中的值注入ValidationMessages.properties?

Java 如何将另一个属性文件中的值注入ValidationMessages.properties?,java,spring,hibernate,hibernate-validator,properties-file,Java,Spring,Hibernate,Hibernate Validator,Properties File,我需要更改hibernate验证器使用的@NotNull消息 已使用ValidationMessages.properties中的一行成功完成此操作,例如:javax.validation.constraints.NotNull.message=my validation message 然而,这并不是我们所需要的。将省去有关为什么所有这些消息都应该来自单个messages.properties文件的详细信息,该文件不仅用于验证,还用于其他消息 假设messages.properties最初包含

我需要更改hibernate验证器使用的
@NotNull
消息

已使用ValidationMessages.properties中的一行成功完成此操作,例如:
javax.validation.constraints.NotNull.message=my validation message

然而,这并不是我们所需要的。将省去有关为什么所有这些消息都应该来自单个messages.properties文件的详细信息,该文件不仅用于验证,还用于其他消息


假设messages.properties最初包含一个属性
CCCI\u 0001=my generic message
。是否可以以某种方式将messages.properties中的此属性值替换为ValidationMessages.properties中的占位符?

您可以做的是使用自定义的
MessageInterpolator
引导您的
验证器工厂。如果您愿意使用特定于Hibernate验证程序的功能,可以使用
ResourceBundleLocator
-请参阅。看起来有点像这样:

Validator validator = Validation.byDefaultProvider()
        .configure()
        .messageInterpolator(
                new ResourceBundleMessageInterpolator(
                        new PlatformResourceBundleLocator( "MyMessages" )
                )
        )
        .buildValidatorFactory()
        .getValidator();

不,抱歉,所有Hibernate验证消息必须在注释内声明,并且不能使用@Value注释动态注入。您可以编写一个自定义注释包装器,允许您将值注入错误消息中,但默认情况下它们不能是动态的