spring 编译期间Sping Boot 验证消息解析

5lwkijsr  于 5个月前  发布在  Spring
关注(0)|答案(1)|浏览(50)

我已经为i18 n设置了Sping Boot Validation Message,其中包含各种必要的注解和bean,并使其全部工作,例如
第一个月

@NotEmpty(message = "{user.lastname_required}")
private String lastName;

字符串
messages.properties

user.lastname_required=Please provide your last name


我的问题是,如果我在属性文件或POJO中有一个错字,或者只是错过了添加一条消息,只有在运行时抛出错误时才能发现。
有没有人想出一个解决方案,如何在编译过程中发现这一点?

v1l68za4

v1l68za41#

看起来你希望动态加载有效的消息。
你可以添加静态常量,这些常量将在公共常量类中定义。
代码片段如下所示:

step1.创建常量类

public class ValidationMessages {
    public static final String LAST_NAME_REQUIRED = "user.lastname_required";

}

// In your POJO
@NotEmpty(message = "{" + ValidationMessages.LAST_NAME_REQUIRED + "}")
private String lastName;

字符串

step 2.从应用加载消息

可以在setmethod上使用@Value注解,将值注入静态字段

@Component
public class ValidationMessages {
    public static String LAST_NAME_REQUIRED = "user.lastname_required";

//  the message which behind ':' is  indicate default for the injection
    @Value("${user.lastname_required:last_name is required}")
    public void setLastname (String message) {
        LAST_NAME_REQUIRED = message;
    }

}


再多说一句,在spring application.properties中定义消息,将验证消息生命周期范围与spring应用程序绑定,我认为这不是产品环境中的最佳实践。当你想更改消息时,如果没有关机模式下没有热刷新spring配置,它应该通过重启应用程序刷新配置,如果经常修改,这意味着你将在每次修改中重新启动应用程序。
验证消息应该是一个常量,而不是从任何地方动态加载

相关问题