[IT-용어] @Validated
💡 @Validated ?
@Validated는 스프링 프레임워크에서 제공하는 어노테이션 중 하나로, 입력 값의 유효성을 검사하여 잘못된 값이 들어오는 것을 방지하는 역할을 합니다. 이 어노테이션을 사용하면 컨트롤러나 서비스 레이어에서 파라미터나 객체 등의 값을 검증할 수 있습니다.
@Validated 어노테이션은 메서드나 클래스에 선언될 수 있으며, 메서드 파라미터나 객체에 적용될 수 있습니다. 이 어노테이션을 사용하면 입력 값의 유효성을 검사할 수 있기 때문에,
잘못된 값이 들어올 경우 예외를 발생시켜 처리할 수 있습니다.
또한, 입력 값의 유효성을 검사하면 보안 문제나 데이터 무결성 등의 문제를 예방할 수 있습니다. 또한, 사용자가 입력한 값이 예상치 못한 형식으로 들어올 경우에도 예외를 처리할 수 있습니다.
🐵 유효성검사의 예시
@Validated 어노테이션을 사용하면 입력 값의 유효성을 검사할 수 있습니다.
예를 들어, 다음과 같은 코드를 작성할 수 있습니다.
@RestController
@Validated
public class UserController {
@GetMapping("/users/{id}")
public User getUserById(@PathVariable("id") @Min(1) Long id) {
// ...
}
}
이 코드는 “/users/{id}” 경로에 대한 GET 요청을 처리하며, id 값이 1보다 작은 경우에는 예외를 발생시킵니다. 이를 통해 입력 값의 유효성을 검사할 수 있습니다.
코드 진행과정 ↓
-
@RestController 어노테이션은 해당 클래스가 REST API를 처리하는 컨트롤러임을 나타내며,
-
@Validated 어노테이션은 컨트롤러 내부에서 유효성 검사를 수행할 수 있도록 해주는 어노테이션입니다.
-
@GetMapping 어노테이션은 HTTP GET 요청을 처리하는 메서드임을 나타내며, “/users/{id}” 경로의 요청을 처리합니다.
-
@PathVariable 어노테이션은 경로에 포함된 변수(id)의 값을 메서드의 파라미터로 받아들입니다.
-
@Min 어노테이션은 해당 변수(id)의 최솟값을 정의합니다.
이 코드에서는 id 값이 1보다 작으면 유효성 검사 실패로 처리하게 됩니다.
id 값이 1보다 작으면 유효성 검사 실패로 처리되는 부분? → @Min(1) 어노테이션이 적용된 파라미터인 Long id 입니다.
즉, @Min(1) 어노테이션은 id 값이 1보다 작으면 유효성 검사 실패로 처리합니다. 이는 컨트롤러 메서드의 파라미터 유효성 검사를 수행하여, 요청이 들어온 클라이언트로부터 받은 입력값의 유효성을 검증하는 역할을 합니다.
따라서, 위 코드는 HTTP GET 요청을 처리하는 “/users/{id}” 경로에서, id 값이 1보다 작으면 유효성 검사 실패로 처리하는 컨트롤러입니다. 이를 통해 입력값의 유효성 검사를 통해 예상치 못한 결과를 방지할 수 있습니다.
🐵 활용법
@Validated 어노테이션을 사용하려면, 스프링 프레임워크 버전 4.0 이상이 필요합니다. 또한, 의존성으로 spring-boot-starter-validation을 추가해야 합니다.
@Validated 어노테이션을 사용하려면, 다음과 같이 메서드나 클래스에 적용합니다.
@Validated
public class UserController {
// ...
}
또한, 파라미터나 객체에 적용할 경우에는 다음과 같이 작성합니다.
@GetMapping("/users/{id}")
public User getUserById(@PathVariable("id") @Min(1) Long id) {
// ...
}
이렇게 작성하면, @Min 어노테이션을 사용하여 id 값이 1보다 작은 경우 예외를 발생시킬 수 있습니다.
🐵 고려해야할 사항
@Validated 어노테이션을 사용할 때에는 다음과 같은 사항을 고려해야 합니다.
1. 파라미터 유효성 검사
@Validated 어노테이션을 사용하여 파라미터나 객체의 유효성을 검사할 때, 검사할 수 있는 범위를 고려해야 합니다. 예를 들어, id 값이 1보다 작은 경우 예외를 발생시키는 @Min 어노테이션을 사용하는 경우, 유효성 검사를 너무 엄격하게 적용할 경우 유연성이 떨어지는 문제가 발생할 수 있습니다.
2. 예외 처리
@Validated 어노테이션을 사용하여 유효성 검사를 수행할 때, 검사에 실패한 경우에 대한 예외 처리를 고려해야 합니다. 예외를 처리하지 않을 경우, 예상치 못한 결과가 발생할 수 있습니다.
3. 성능
@Validated 어노테이션을 사용하여 유효성 검사를 수행할 때, 검사에 소요되는 시간이 성능에 영향을 미칠 수 있습니다. 따라서, 검사의 범위나 방식을 최적화하여 성능을 향상시키는 방법을 고려해야 합니다.
4. 입력 값의 형식
@Validated 어노테이션을 사용하여 유효성 검사를 수행할 때, 입력 값의 형식을 고려해야 합니다. 예를 들어, 숫자형식의 값을 검사할 때는 @Min, @Max, @DecimalMin, @DecimalMax 등의 어노테이션을 사용할 수 있습니다. 문자열 형식의 값을 검사할 때는 @Size, @Pattern 등의 어노테이션을 사용할 수 있습니다.
5. 유효성 검사 방식
@Validated 어노테이션을 사용하여 유효성 검사를 수행할 때, 검사 방식을 고려해야 합니다. 예를 들어, 입력 값의 범위를 검사할 때는 @Min, @Max 어노테이션을 사용할 수 있습니다. 정규표현식을 사용하여 패턴을 검사할 때는 @Pattern 어노테이션을 사용할 수 있습니다.
좋은 코드를 작성하기 위해서는 @Validated 어노테이션을 올바르게 활용하여 입력 값의 유효성을 검사해야 합니다. 이를 위해서는 고려해야 할 사항들을 잘 숙지하고 적절하게 활용하는 것이 필요합니다.
⭐ 결론
@Validated 어노테이션은 Spring Framework에서 제공하는 유효성 검사 어노테이션입니다. 이를 사용하면 컨트롤러나 서비스 계층에서 입력값을 검증하여 비즈니스 로직이 수행되기 전에 유효성을 검증할 수 있습니다.
이 글에서는 @Validated 어노테이션의 정의와 사용하는 이유, 유효성 검사의 예시, 활용법, 그리고 고려해야 할 사항들에 대해 알아보았습니다.
올바른 사용을 위해서는 파라미터 유효성 검사의 범위와 방식, 예외 처리, 성능, 입력 값의 형식, 유효성 검사 방식 등 다양한 사항을 고려해야 합니다. 이를 잘 숙지하여 코드를 작성하면 안정적이고 유지보수가 용이한 코드를 작성할 수 있습니다.
⭐TIL
@Validated 어노테이션을 사용하면 Spring Framework에서 컨트롤러나 서비스 계층에서 입력값을 검증하여 비즈니스 로직이 수행되기 전에 유효성을 검증할 수 있으며, 이를 통해 안정적이고 유지보수가 용이한 코드를 작성할 수 있게된다.
댓글남기기