복붙노트

[SPRING] Javax 유효성 검사 @NotNull 주석 사용법

SPRING

Javax 유효성 검사 @NotNull 주석 사용법

주어진 회사 ID에 대한 문서 목록을 얻는 간단한 방법이 있습니다. 방법은 다음과 같습니다.

@Override
public List<Documents> getDocumentList(@NotNull Integer companyId) {
    Company company = new Company(companyId);
    return this.documentRepository.findByCompany(company);
}

Javax 검증 제약 조건을 사용하여 전달 된 companyId가 null이 아닌지 확인하고자했습니다. 하지만 null 값을 전달할 수 있으므로 저장소에있는 findByCompany 호출로 전달됩니다. 밸리데이션을 강요하기 위해 @NotNull 앞에 @Valid를 추가했으나 아무것도 수행하지 않았습니다.

null 값을 검사하기 위해 두 줄을 항상 작성할 수 있지만 javax.validation 주석을 사용하여 코드를 더 읽기 쉽고 간결하게 만들려고했습니다. 메서드 매개 변수에서 주석을 작동시키는 방법이 있습니까?

해결법

  1. ==============================

    1.매개 변수 유효성 검사를 활성화하려면 클래스에 @Validated 주석을 달기 만하면됩니다.

    매개 변수 유효성 검사를 활성화하려면 클래스에 @Validated 주석을 달기 만하면됩니다.

    import org.springframework.validation.annotation.Validated;
    
  2. ==============================

    2.The Java EE 6 튜토리얼 :

    The Java EE 6 튜토리얼 :

    다음과 같이 선언 된 bean과 관련된 필드의 유효성을 검사해야합니다.

    @Entity
    @Table(name="users")
    public class BackgammonUser {
    
        @Id
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        private Long userId;
    
        @Column(name="username")
        @NotBlank
        private String userName;
    
        @NotBlank
        private String password;
    
        @NotNull
        private Boolean enabled;
    }
    

    BackgammonUser는 빈으로 간주됩니다.

  3. ==============================

    3.@ 메서드를 사용하여 클래스를 주입하면 예상대로 작동합니다.

    @ 메서드를 사용하여 클래스를 주입하면 예상대로 작동합니다.

    @Stateless
    public class MyBean{ 
        @Inject
        TestClass test;
    }
    

    public class TestClass {
        public List<Documents> getDocumentList(@NotNull Integer companyId)
        {
            //...
        }
    }
    

    null 매개 변수를 사용하여 메서드를 호출하면 ConstraintViolationException이 발생합니다.

    WFLYEJB0034: EJB Invocation failed on component MyBean for method ...:
    javax.ejb.EJBException: javax.validation.ConstraintViolationException:
    1 constraint violation(s) occurred during method validation.
    
  4. ==============================

    4.@NotNull 주석,

    @NotNull 주석,

  5. from https://stackoverflow.com/questions/43670862/javax-validation-notnull-annotation-usage by cc-by-sa and MIT license