我有一些“X 是有效的 IFF 服务 Y 返回 Z”形式的业务验证逻辑,其中 X 和 Z 在编译时是已知的,并且 Y 的位置是从 Spring 配置文件中加载的。
我想使用基于 JSR-303 注释的验证以及 Spring 配置,所以我可以编写如下代码:
自定义类级别约束注释:
@MyValidation
public class X { .... }
@MyValidation的约束验证器:
public class MyValidationValidator implements ConstraintValidator<MyValidation, X> {
private MyService service;
public MyService getService() { return service; }
public void setService(MyService serv) { this.service = serv; }
//Validation Logic...
}
弹簧配置:
<bean id="ServiceY" class="...">
...
</bean>
<bean id="mvv" class="MyValidationValidator">
<property name="service" value="ServiceY" />
</bean>
但是我以这种方式组合这些的尝试失败了,因为验证器的属性没有设置。
现在,我正在使用 Spring AOP 拦截器作为解决方法,但这在我看来并不理想。
这里的其他问题之一让我想到了使用属性文件/属性,但这不需要我重复服务的配置吗?
另一个提到以编程方式定义约束映射,但如果我这样做,我的解决方法可能会更好。
关于如何进行动态配置的任何线索?