Java 取决于当前记录的主体的验证规则

Java 取决于当前记录的主体的验证规则,java,jakarta-ee,ejb,jax-rs,bean-validation,Java,Jakarta Ee,Ejb,Jax Rs,Bean Validation,我在EJB中有一些业务方法接收DTO作为参数,即: public void someMethod(SomeClass someArgument); 我想定义一个用于验证参数的自定义验证器(请注意,我想将其作为参数进行验证,而不是在类级别进行验证,尽管如果有人有一个解决方案,其中涉及到它是受欢迎的)。验证需要来自当前记录主体的数据,例如,通过将@Context注释注入SecurityContext 因此,我的第一种方法是为SomeClass实现一个新的ConstraintValidator,带有

我在EJB中有一些业务方法接收DTO作为参数,即:

public void someMethod(SomeClass someArgument);
我想定义一个用于验证参数的自定义验证器(请注意,我想将其作为参数进行验证,而不是在类级别进行验证,尽管如果有人有一个解决方案,其中涉及到它是受欢迎的)。验证需要来自当前记录主体的数据,例如,通过将@Context注释注入SecurityContext

因此,我的第一种方法是为SomeClass实现一个新的ConstraintValidator,带有参数target。问题是,我认为在这个ConstraintValidator中注入带有@Context的SecurityContext是行不通的,因为bean验证api要求isValid方法应该是线程安全的,所以我猜这个验证实例是并发重用的,然后注入的SecurityContext就行不通了


我的怀疑正确吗?您将如何处理这种需要使用安全上下文提供的信息来执行验证的用例?我知道如何使用spring安全性,但不知道如何在javaee(版本7)环境中使用。

Bean validation v1.1与cdi集成。理论上,您可以在验证器中注入预定义的bean主体。不存在线程问题,因为约束由BV框架调用。 因此,在您的自定义验证器中,我将执行以下操作:

@Inject private Principal principal

Bean验证v1.1与cdi集成。理论上,您可以在验证器中注入预定义的bean主体。不存在线程问题,因为约束由BV框架调用。 因此,在您的自定义验证器中,我将执行以下操作:

@Inject private Principal principal

Bean验证v1.1与cdi集成。理论上,您可以在验证器中注入预定义的bean主体。不存在线程问题,因为约束由BV框架调用。 因此,在您的自定义验证器中,我将执行以下操作:

@Inject private Principal principal

Bean验证v1.1与cdi集成。理论上,您可以在验证器中注入预定义的bean主体。不存在线程问题,因为约束由BV框架调用。 因此,在您的自定义验证器中,我将执行以下操作:

@Inject private Principal principal