[SPRING] Resteasy Bean 유효성 검사가 호출되지 않음
SPRINGResteasy Bean 유효성 검사가 호출되지 않음
Resteasy의 SpringContextLoaderListener를 통해 Spring을 사용하는 Resteasy 서비스가 있습니다. 이것은 Resteasy 버전 3.0-beta-6을 기반으로합니다.
들어오는 요청에 대해 빈 검증을 사용하고 싶지만 Resteasy가 유효성 검사기를 호출 할 수 없습니다. 구성된 유효성 검사가없는 것처럼 작동하고 메서드에 잘못된 입력 개체를 전달합니다.
나는 다음을했다 :
@Named
@Path("users")
@ValidateRequest
public class UserResource
{
/**
*
* @param user
*
* curl -x POST http://localhost:7016/api/1.0/users
*
*/
@POST
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
public Response createUser(@Valid User user)
{
//User creation logic here.
}
}
@JsonPropertyOrder({
"user_id",
"user_name",
"email"
})
public class User
{
@JsonProperty("user_id")
private Long userId;
@JsonProperty("user_name")
@NotNull(message = "Username must be provided")
private String username;
@Email(message = "Invalid email address.")
private String email;
//Getters and Setters Removed for Brevity
}
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-hibernatevalidator-provider</artifactId>
<version>${resteasy.version}</version>
</dependency>
resteasy-hibernatevalidator-provider 의존성은 HibernateValidatorContextResolver와 그것과 관련된 HibernateValidatorAdapter를 가져온다.
나는 내 pom에서 Resteasy 버전을 2.3.5로 되돌 렸습니다. 최종 및 bean 유효성 검사는 코드 변경없이 작동하기 시작했습니다.
해결법
-
==============================
1.이것을 해 봤어?
이것을 해 봤어?
RestEasy에 대한 유효성 검사기 어댑터 제공
RESTEasy는 클래스 경로에있는 ContextResolver 공급자를 통해 ValidatorAdapter 구현을 얻으려고 시도합니다. 우리는 RESTEasy에 다음과 같은 구현을 제공 할 수 있습니다.
@Provider public class MyValidatorContextResolver implements ContextResolver<ValidatorAdapter> { @Override public ValidatorAdapter getContext(Class<?> type) { return new MyValidator(); } }
-
==============================
2.전쟁에서 META-INF / services / javax.ws.rs.Providers가 정의되어 있는지 확인하십시오.
전쟁에서 META-INF / services / javax.ws.rs.Providers가 정의되어 있는지 확인하십시오.
resteasy-3.0과 함께 제공되는 최대 절전 모드 유효성 검사기를 사용할 수 있습니다.
resteasy 문서의 48 장을 확인하십시오.
http://docs.jboss.org/resteasy/docs/3.0.0.Final/userguide/html_single/index.html#JBoss AS 6
-
==============================
3.Resteasy '3.0.6.Final과 Spring 4.1.0.RELEASE로 실행.
Resteasy '3.0.6.Final과 Spring 4.1.0.RELEASE로 실행.
'resteasy-hibernatevalidator-provider'는 @Valid 주석이 달린 매개 변수를 평가하지 않습니다. 'resteasy-validator-provider-11'을 사용하면 모든 것이 작동하게되고 보너스는 'resteasy-hibernatevalidator-provider'를 사용할 때 Hibernate 유효성 검사기 버전 4가 필요없는 대신 Hiberbate 유효성 검사기 '5.0.1.Final'을 사용합니다.
from https://stackoverflow.com/questions/17005292/resteasy-bean-validation-not-being-invoked by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring Security 경고 : 클래스 AuthorityUtils는 추상적입니까? (0) | 2019.05.08 |
---|---|
[SPRING] 봄 Oauth2.0 누락 교부 유형 (0) | 2019.05.08 |
[SPRING] 스프링 보안 : 'remember me'쿠키를 프로그래밍 방식으로 지우는 법? (0) | 2019.05.08 |
[SPRING] Swagger UI와 ApiResponses 주석을 Java Spring 엔드 포인트와 함께 사용할 때 DRY하는 방법은 무엇입니까? (0) | 2019.05.08 |
[SPRING] Spring-Boot에서 production.properties를 오버라이드하는 법? (0) | 2019.05.08 |