46.5. 예제
다음과 같은 주석이 있는 javaBean이 있다고 가정하겠습니다.
Car.java
public class Car {
@NotNull
private String manufacturer;
@NotNull
@Size(min = 5, max = 14, groups = OptionalChecks.class)
private String licensePlate;
// getter and setter
}
사용자 정의 검증 그룹에 대한 인터페이스 정의
OptionalChecks.java
public interface OptionalChecks {
}
다음 Camel 경로에서는 속성 제조업체 및 licensePlate에 대한 @NotNull 제약 조건만 검증됩니다(기본 그룹 javax.validation.groups.Default).
from("direct:start")
.to("bean-validator://x")
.to("mock:end")
OptionalChecks 그룹의 제약 조건을 확인하려면 다음과 같이 경로를 정의해야 합니다.
from("direct:start")
.to("bean-validator://x?group=OptionalChecks")
.to("mock:end")
두 그룹의 제약 조건을 확인하려면 먼저 새 인터페이스를 정의해야 합니다.
AllChecks.java
@GroupSequence({Default.class, OptionalChecks.class})
public interface AllChecks {
}
그러면 경로 정의가 다음과 같이 표시됩니다.
from("direct:start")
.to("bean-validator://x?group=AllChecks")
.to("mock:end")
그리고 자체 메시지 보컬레이터, 트래버블 해결 프로그램 및 제약 조건 유효성 검사 업체를 제공해야하는 경우 다음과 같은 경로를 작성해야합니다.
<bean id="myMessageInterpolator" class="my.ConstraintValidatorFactory" />
<bean id="myTraversableResolver" class="my.TraversableResolver" />
<bean id="myConstraintValidatorFactory" class="my.ConstraintValidatorFactory" />
from("direct:start")
.to("bean-validator://x?group=AllChecks&messageInterpolator=#myMessageInterpolator
&traversableResolver=#myTraversableResolver&constraintValidatorFactory=#myConstraintValidatorFactory")
.to("mock:end")
또한 제약 조건을 XML로 설명 할 수 있으며 Java 주석이 아닙니다. 이 경우 다음과 같은 파일 META-INF/validation.xml 을 제공해야 합니다.
validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<validation-config
xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration">
<default-provider>org.hibernate.validator.HibernateValidator</default-provider>
<message-interpolator>org.hibernate.validator.engine.ResourceBundleMessageInterpolator</message-interpolator>
<traversable-resolver>org.hibernate.validator.engine.resolver.DefaultTraversableResolver</traversable-resolver>
<constraint-validator-factory>org.hibernate.validator.engine.ConstraintValidatorFactoryImpl</constraint-validator-factory>
<constraint-mapping>/constraints-car.xml</constraint-mapping>
</validation-config>
constraints-car.xml 파일
constraints-car.xml
<?xml version="1.0" encoding="UTF-8"?>
<constraint-mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.0.xsd"
xmlns="http://jboss.org/xml/ns/javax/validation/mapping">
<default-package>org.apache.camel.component.bean.validator</default-package>
<bean class="CarWithoutAnnotations" ignore-annotations="true">
<field name="manufacturer">
<constraint annotation="javax.validation.constraints.NotNull" />
</field>
<field name="licensePlate">
<constraint annotation="javax.validation.constraints.NotNull" />
<constraint annotation="javax.validation.constraints.Size">
<groups>
<value>org.apache.camel.component.bean.validator.OptionalChecks</value>
</groups>
<element name="min">5</element>
<element name="max">14</element>
</constraint>
</field>
</bean>
</constraint-mappings>
다음은 OrderedChecks 가 https://github.com/apache/camel/blob/master/components/camel-bean-validator/src/test/java/org/apache/camel/component/bean/validator/OrderedChecks.java일 수 있는 예제 경로 정의의 XML 구문입니다.
본문에는 검증할 클래스의 인스턴스가 포함되어야 합니다.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:start"/>
<to uri="bean-validator://x?group=org.apache.camel.component.bean.validator.OrderedChecks"/>
</route>
</camelContext>
</beans>