一种递归方法的Java方法验证

一种递归方法的Java方法验证,java,spring-boot,validation,Java,Spring Boot,Validation,在Spring引导应用程序中,我有一个用@service 和@已验证。 在这个类中,我有一个公共实例方法,其中参数用约束注释进行注释。因此,在方法调用之前,将验证方法的参数,以验证它们是否符合这些约束。 如果该方法是从另一个类调用的,则此方法有效。但是,如果该方法是递归的,则不会验证其参数,因为该方法是从该方法所在的类调用的。如何解决这个问题?假设您没有在服务类中使用任何共享状态,您可以得到相同类型的bean并调用递归方法。然而,这感觉有点不舒服,并不是我的第一选择 我建议将验证移到方法代码中。

在Spring引导应用程序中,我有一个用
@service
@已验证
。 在这个类中,我有一个公共实例方法,其中参数用约束注释进行注释。因此,在方法调用之前,将验证方法的参数,以验证它们是否符合这些约束。
如果该方法是从另一个类调用的,则此方法有效。但是,如果该方法是递归的,则不会验证其参数,因为该方法是从该方法所在的类调用的。如何解决这个问题?

假设您没有在服务类中使用任何共享状态,您可以得到相同类型的bean并调用递归方法。然而,这感觉有点不舒服,并不是我的第一选择


我建议将验证移到方法代码中。这将解决您当前的问题,同时允许您的验证是可扩展的,并且允许您单独测试它们。根据它们的复杂性,您可以将它们放在一个单独的类中,例如。

是,由于自调用,因此没有验证。你真的需要重新验证你的参数吗,即使它们在第一次调用时就被验证了?如果您通过递归逻辑更新参数,您应该确保您的udpates永远不会使它们无效。或者您可以寻找自注入,但取决于递归调用的复杂性,它可能会很重。。