@Guarded未验证@NotNull构造函数字段

时间:2015-07-10 09:27:15

标签: java bean-validation oval

我试图使用Oval 1.84来解决一些没有样板的验证限制。当我用@NotNull(javax.validation.constraint和net.sf.oval.validator)标记字段时,验证工作。

但是在对方法和构造函数参数实现constarint的情况下不起作用。

1 个答案:

答案 0 :(得分:0)

参数验证需要使用一些方法调用拦截字节码。 OVal为AspectJ和Spring AOP提供了现成的实现。

使用AspectJ

如何在AspectJ中使用它在http://oval.sourceforge.net/userguide.html#programming-by-contract

中详细记录

使用Spring AOP

Spring AOP的用法概述于测试用例中 https://svn.code.sf.net/p/oval/code/trunk/src/test/java/net/sf/oval/test/integration/spring/SpringAOPAllianceTest.java

在Spring中,您需要配置要进行方法参数验证的bean,例如:

<bean id="myService" class="com.example.MyService" />

一个调用拦截器:

<bean id="ovalGuardInterceptor" class="net.sf.oval.guard.GuardInterceptor" />
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
    <property name="proxyTargetClass" value="false" />
    <property name="interceptorNames">
        <list>
            <value>ovalGuardInterceptor</value>
        </list>
    </property>
    <!-- the next line tells which beans you want to use validation for -->
    <property name="beanNames" value="myService" />
</bean>