복붙노트

[SPRING] Resteasy Bean 유효성 검사가 호출되지 않음

SPRING

Resteasy 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. ==============================

    1.이것을 해 봤어?

    이것을 해 봤어?

    RestEasy에 대한 유효성 검사기 어댑터 제공

    RESTEasy는 클래스 경로에있는 ContextResolver 공급자를 통해 ValidatorAdapter 구현을 얻으려고 시도합니다. 우리는 RESTEasy에 다음과 같은 구현을 제공 할 수 있습니다.

    @Provider
    public class MyValidatorContextResolver implements ContextResolver<ValidatorAdapter> {
    
       @Override
       public ValidatorAdapter getContext(Class<?> type) {
          return new MyValidator(); 
       }
    
    }
    
  2. ==============================

    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. ==============================

    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'을 사용합니다.

  4. from https://stackoverflow.com/questions/17005292/resteasy-bean-validation-not-being-invoked by cc-by-sa and MIT license