在SpringBoot中运行时访问特定属性文件

rseugnpd  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(415)

我有一个springboot应用程序,我正在尝试国际化bean验证错误。因此,我添加了包含验证消息的特定于语言环境的属性文件,并使用localresolver来更改语言环境。问题是,在验证消息中,im还附加了字段名,例如:“payer.toaddress.legalname”。为了获得更好的用户体验,我需要从正确的属性文件中获取这个字段名的翻译。如何实现从validatiomessages\u xx.properties读取键“payer.toaddress.legalname”的值的代码?xx表示验证程序中设置的当前语言代码。

ConstraintViolation<ValidCustomer> constraintValidation = constraintViolations.stream().findFirst().get();

      String invalidField = constraintValidation.getPropertyPath().toString();
      String errorMsg = String.format("%s - %s", invalidField, constraintValidation.getMessage());
dgjrabp2

dgjrabp21#

当应用程序启动时,您的文件将只被读取一次。spring没有任何功能允许在运行时自动动态读取属性文件。
在这种情况下,如果您想动态地读取它,您可以将该属性移动到应用程序在运行时访问的数据库中,或者本地读取一些文件,但需要为其编写代码。
如果您只想读取一次,那么当应用程序启动时,下面的代码将向您注入您希望使用的值。
使用 @Value 在springbean中注入值的注解

@Component <--- must be a component or anything else that spring registers as a bean
public class YourClass {

   @Value("${payer.toAddress.legalName}")
   String legalName;

 }

相关问题