我正在开发一个 spring-boot 应用程序。我有一个名为 Message 的实体类,我想使用 Spring 验证对其进行验证。我需要验证的字段之一是 LocalDateTime,它不得早于当前日期 6 天。我的实体类如下所示:
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Message implements Validator {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", length = 100, nullable = false, unique = true)
private long id;
@Column(name = "start", length = 20, nullable = true)
private LocalDateTime start;
public Message() {}
@Override
public boolean supports(@NotNull Class<?> clazz) {
return Message.class.equals(clazz);
}
@Override
public void validate(Object target, Errors errors) {
Message m = (Message) target;
if(m.getStart() != null && m.getStart().isBefore(LocalDateTime.now(clock).minusDays(6)))
{
errors.rejectValue("start", "beforeMinStart");
}
}
}
我遇到的问题是我希望能够为验证提供时钟,以便我可以使用固定的日期时间进行测试。我不能简单地使用构造函数;该消息可能来自数据库查找。我更喜欢使用依赖注入,但我不确定它如何与实体类一起使用。有什么方法可以做到这一点我只是没有看到吗?
将实体类和验证器类分开:
现在您可以自动装配任何您想要的依赖项。