>  기사  >  Java  >  Java API 개발에서 매개변수 확인을 위해 Bean 유효성 검사 사용

Java API 개발에서 매개변수 확인을 위해 Bean 유효성 검사 사용

WBOY
WBOY원래의
2023-06-18 23:58:011515검색

Java API 개발에 있어서 매개변수 검증은 매우 중요한 연결고리입니다. Bean 유효성 검증 프레임워크를 사용하면 매개변수를 쉽게 검증하여 API 매개변수 전송의 적법성을 확인할 수 있습니다. 이 글에서는 Bean Validation을 사용하는 방법을 소개합니다.

1. 빈 검증이란 무엇입니까?

Bean 유효성 검사는 Java EE 6 사양의 일부입니다. 메소드, 생성자, 필드 및 속성과 같은 주석에 유효성 검사 규칙을 추가하는 데 사용할 수 있는 주석 기반 매개변수 유효성 검사 프레임워크입니다. 이러한 주석은 개발자가 코드 작성 단계에서 입력 오류를 더 잘 방지하고 런타임 시 사용자 입력 오류를 감지하고 표시하는 데 도움이 될 수 있습니다.

Bean 유효성 검사 프레임워크는 주로 다음 문제를 해결합니다.

  1. 비즈니스 논리 및 제한 사항을 확인합니다(예: 비어 있는지, 사서함인지, 숫자인지 등).
  2. 형식과 구문을 확인하세요(예: 날짜, 전화번호, 우편번호 등).
  3. 두 개 이상의 필드의 상호 의존성을 확인하세요(예: 시작 날짜는 종료 날짜보다 빨라야 합니다).

2. Bean 유효성 검사는 어떻게 작동하나요?

Bean 유효성 검사 프레임워크는 주석을 사용하여 확인해야 하는 매개변수를 표시합니다. 이러한 주석에는 @NotNull, @Min, @Max, @Size, @Pattern 등이 포함됩니다. 매개변수가 메소드에 전달되면 Bean 유효성 검증 프레임워크는 해당 검증 규칙을 자동으로 실행합니다. 검증에 실패하면 Bean 유효성 검증 프레임워크는 오류 메시지를 보냅니다. 개발자는 비즈니스 요구 사항에 맞게 사용자 지정 유효성 검사 규칙을 작성할 수 있습니다.

Bean 유효성 검사 프레임워크는 Java Bean의 속성 및 메서드 매개 변수에 적용할 수 있는 사전 정의된 유효성 검사 규칙 세트를 제공합니다. 사전 정의된 규칙은 다음과 같습니다.

@NotNull: null 값인지 확인

@Size: 문자열, 컬렉션, 맵 및 배열의 ​​길이 확인

@Min, @Max: 값의 크기 확인

@Email : 이메일 주소의 경우

@Pattern: 정규식을 기반으로 문자열을 확인합니다.

Bean 유효성 검사 프레임워크를 사용할 때 Hibernate Validator와 같은 클래스 경로에 javax.validation-api 및 해당 Bean 유효성 검사 구현을 포함해야 합니다. Maven을 통해 다음 종속성을 추가할 수 있습니다.

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.10.Final</version>
</dependency>

3. Bean 유효성 검사 예

사용자의 기본 정보가 포함된 User 클래스가 있다고 가정합니다. 이제 User 클래스의 속성을 확인해야 합니다.

public class User {
    private String name;
    private Integer age;
    private String email;
    private String address;
  
    // getters and setters
}

프로젝트에서 요구하는 확인 규칙은 다음과 같습니다.

  1. 이름은 비어 있지 않고 길이는 5보다 크고 10보다 작습니다.
  2. age는 비어 있지 않고 0보다 크고 200보다 작습니다. 비어 있지 않으며 유효한 이메일 주소입니다.
  3. 주소는 비어 있을 수 있습니다.
  4. Bean Validation을 사용하여 이러한 유효성 검사 규칙을 정의할 수 있습니다. 구체적인 구현은 다음과 같습니다.
public class UserValidator {

    private Validator validator;

    public UserValidator() {
        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        validator = factory.getValidator();
    }

    /**
     * 对 User 对象进行校验
     * 
     * @param user
     * @return
     */
    public String validate(User user) {

        Set<ConstraintViolation<User>> violations = validator.validate(user);

        StringBuilder result = new StringBuilder();
        if (!violations.isEmpty()) {
            for (ConstraintViolation<User> violation : violations) {
                result.append(violation.getMessage()).append(";");
            }
        }

        return result.toString();
    }
}

UserValidator 클래스에서 Validator 도구 클래스를 사용하여 buildDefaultValidatorFactory() 메서드를 통해 ValidatorFactory 객체를 생성합니다. 유효성 검사기 개체입니다. 사용자 개체는 validator.validate(user) 메서드를 호출하여 확인할 수 있습니다. 검증 결과를 위해 StringBuilder 객체에 모든 오류 정보를 기록하고 이를 호출 측에 반환합니다.

마지막으로 테스트 클래스에서 UserValidator 개체를 사용하여 테스트를 수행할 수 있습니다.

public class UserValidatorTest {
  
    @Test
    void testValidateUser() {
        User user = new User();
        user.setName("abcd");
        user.setAge(300);
        user.setEmail("abc");
        user.setAddress(null);

        UserValidator validator = new UserValidator();
        String result = validator.validate(user);

        assertThat(result, containsString("Name length must be between 5 and 10."));
        assertThat(result, containsString("Size must be between 1 and 200."));
        assertThat(result, containsString("must be a well-formed email address"));
    }
}

위의 테스트 방법에서는 속성이 유효성 검사 규칙을 준수하지 않는 User 개체를 생성했으므로 UserValidator의 유효성 검사()는 이 메서드는 해당 오류 메시지를 반환합니다.

4. 요약

이 글에서는 Bean Validation 프레임워크의 개념과 사용법을 소개합니다. 프레임워크는 주석을 통해 매개변수를 확인하므로 개발자가 코드를 작성할 때 입력 오류를 방지하고 런타임 시 사용자 입력 오류를 감지하고 프롬프트하는 데 도움이 될 수 있습니다. 동시에 개발자는 보다 복잡한 확인 시나리오를 충족하기 위해 비즈니스 요구에 따라 사용자 정의된 확인 규칙을 작성할 수 있습니다.

위 내용은 Java API 개발에서 매개변수 확인을 위해 Bean 유효성 검사 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.