Java 在域对象生成器中执行Spring验证的好主意?

Java 在域对象生成器中执行Spring验证的好主意?,java,spring,validation,Java,Spring,Validation,我正在编写一些帮助代码,以便使用构建器模式将构建器添加到我的域模型中。我已经构建了代码的基本部分,但是我想添加另一个构建方法来验证新构建的对象。我设想这个新方法将接受一个类来匹配bean验证中的组。因此,当我从构建器中获取对象时,我知道它是我想要的状态的有效对象。关于这种方法,我有两个问题 首先,这听起来是一个好方法吗?我还没有在网上看到任何关于这样做的东西,但我认为把它放在建筑商里是个好主意 下一个问题,将验证器放入构建器的好方法是什么?我应该试着把它连接起来吗?使用构建器模式是构建对象的好方

我正在编写一些帮助代码,以便使用构建器模式将构建器添加到我的域模型中。我已经构建了代码的基本部分,但是我想添加另一个构建方法来验证新构建的对象。我设想这个新方法将接受一个类来匹配bean验证中的组。因此,当我从构建器中获取对象时,我知道它是我想要的状态的有效对象。关于这种方法,我有两个问题

首先,这听起来是一个好方法吗?我还没有在网上看到任何关于这样做的东西,但我认为把它放在建筑商里是个好主意


下一个问题,将验证器放入构建器的好方法是什么?我应该试着把它连接起来吗?

使用构建器模式是构建对象的好方法,因此它应该可以很好地满足您的需要。您说过要添加另一个生成方法。这是否意味着您将有两种构建方法—一种验证,另一种不验证?我只有一个方法,这样您就可以确保您的对象进行验证

关于如何验证,Spring文档讨论了使用JSR-303进行验证


只是在构建Spring应用程序时要记住的一点。考虑一下GRAILS是否可能是你感兴趣的事情。其中一个部分是域对象验证,它能够构建用于测试的对象以进行验证。显然,如果要使用grails,您可能会希望使用更多的功能,但只是想注意一下。

是的,我在考虑有两种方法,一种是盲目构建对象,另一种是构建对象,然后在其上运行validate。我喜欢使用validate方法。如果你要构建一个对象,你应该知道你想要它反映什么样的有效状态。至于验证代码,我熟悉使用@validated注释,并且我在方法签名中使用了它来根据特定的验证组验证对象。我尝试在域对象中使用@autowired作为验证器,但没有成功。在某种程度上,在域对象生成器中使用@Autowired似乎是错误的。我想下一个选择是从头开始创建验证器。有什么想法吗?为什么@Autowired在这里看起来是错误的?如果您希望能够模拟它进行测试或更改正在使用的验证器的类型,那么就使用自动连线。我有一种预感,Spring可能不允许这样做。我做了一些研究,发现@Autowired只适用于SpringBean。由于这些是带有@entity标记的简单域对象,我认为它们不符合SpringBean的条件。这就是我所看到的,我也试图通过手动构建验证器来让验证器工作,但是没有工作。然而,我给你答案,因为你确实回答了第一部分。