我有一些形式爲「X是有效的IFF服務Y返回Z」的業務驗證邏輯,其中X和Z在編譯時已知,並且Y的位置是從Spring配置加載的文件。運行時配置Hibernate驗證註釋
我想使用JSR-303基於註解的驗證,與Spring配置在一起,所以我可以寫類似下面的代碼:
自定義類級別約束註釋:
@MyValidation
public class X { .... }
ConstraintValidator爲@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...
}
Spring配置:
<bean id="ServiceY" class="...">
...
</bean>
<bean id="mvv" class="MyValidationValidator">
<property name="service" value="ServiceY" />
</bean>
但我試圖以這種方式結合這些方式失敗了,因爲驗證器的屬性沒有設置。
現在,我使用Spring AOP攔截器作爲解決方法,但這在我看來並不理想。
這裏的其他問題之一,讓我想到使用屬性文件/屬性,但不會要求我重複服務的配置?
另一個提到以編程方式定義約束映射,但如果我這樣做,我可能會更好我的解決方法。
任何關於如何做動態配置的線索?