> For the complete documentation index, see [llms.txt](https://wannaqueen.gitbook.io/spring5/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wannaqueen.gitbook.io/spring5/spring-5.0/3.-by-ys-sh/3.7-by-sh/3.7.1-by-sh.md).

# 3.7.1 by sh

### **3.7.1. JSR-303 Bean Validation API 개요**

**JSR-303은 자바 플랫폼에 대한 유효성 제약 조건 선언 및 메타 데이터를 표준화 합니다. 이 API를 사용하면, 선언적인 유효성 검증 제약 조건으로 도메인 모델 속성들에 Annotation을 추가하고 런타임에 이것들을 적용합니다.** 많은 내장된 제약 조건들을 사용할 수 있습니다. 사용자 정의 제약 조건을 정의할 수도 있습니다.&#x20;

{% hint style="info" %}
JSR 303 Bean Validation&#x20;

 도메인 객체(모델)를 확인하기 위한 자바 표준 기술. Annotation 기반으로 제공되는 Validation.

<https://www.slideshare.net/kingori/spring-3-jsr-303>

{% endhint %}

![](https://3140643518-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWdhssr0w9IqAHmA-ke%2F-LZxapznYF_RjvszTaQJ%2F-LZxb5UOMv9rJn5N4JB5%2Fimage.png?alt=media\&token=dbf52be9-4460-42cc-8036-1bf43a53fb44)

두 가지 속성을 가진 간단한 `PersonForm`모델을 보여주는 다음 예제를 고려하십시오.

```java
public class PersonForm {
    private String name;
    private int age;
}
```

JSR-303에서는 다음 예제와 같이 이러한 속성에 대해 선언적 유효성 검사 제약 조건을 정의할 수 있습니다.

```java
public class PersonForm {

    @NotNull
    @Size(max=64)
    private String name;

    @Min(0)
    private int age;
}
```

{% hint style="info" %}
JSR-303 Spec 기본

 @NotNull : Null이 아닌가?&#x20;

 @Size(min=,max=) : 문자열, 배열 등의 크기가 지정 크기를 만족하는가?&#x20;

 @Min : 지정 값 이상인가?
{% endhint %}

JSR-303 Validator가 이 클래스의 인스턴스를 확인하면 이러한 제약 조건이 적용됩니다. JSR-303 및 JSR-349에 대한 일반적인 정보는 [Bean Validation website](http://beanvalidation.org/).를 참조하십시오. 기본 참조 구현의 특정 기능에 대한 정보는 [Hibernate Validator](https://www.hibernate.org/412.html) 문서를 참조하십시오. 빈 검증 Provider를 스프링 빈으로 설정하는 방법을 배우려면 계속 읽으십시오.
