본문 바로가기
Dev/Spring Framework

『Spring Boot』 Spring Boot Annotation 정리

by 세대교체 2024. 11. 25.

스프링 부트를 사용하여 RESTful API를 개발할 때 주로 사용하는 어노테이션을 알아보자.

특히 JSON 형식의 데이터를 처리할 때 유용한 애노테이션들을 중심으로 살펴보자.

 

어노테이션을 사용할 때에도 내부 동작 원리나 해당 어노테이션을 사용하게 된 배경을 아는 것 또한 중요하지만 Deep Dive 하기 전에 40개 정도만 가볍게 한번 훑어보자.

 

@RestController

@Controller@ResponseBody를 결합한 애노테이션으로 컨트롤러의 메서드들이 JSON 형식의 데이터를 반환하도록 한다.

 

 

@ResponseBody

메서드의 반환 값을 HTTP 응답 본문으로 변환한다. @RestController에서는 기본적으로 적용된다.

 

 

@RequestMapping

클래스나 메서드 수준에서 요청 URL과 HTTP 메서드를 매핑한다.

 

 

@GetMapping / @PostMapping / @PutMapping / @DeleteMapping

HTTP GET/POST/PUT/DELETE 요청을 특정 메서드에 매핑한다.

 

 

@RequestBody

HTTP 요청의 본문을 자바 객체로 변환하여 매핑한다.

 

 

@PathVariable

URL 경로에 포함된 변수를 메서드 파라미터로 바인딩한다.

 

 

@RequestParam

쿼리 파라미터나 폼 데이터를 메서드 파라미터로 바인딩한다.

 

 

@ResponseStatus

메서드가 반환하는 HTTP 상태 코드를 지정한다.

 

 

@ExceptionHandler

특정 예외가 발생했을 때 실행될 메서드를 정의한다.

 

 

@RestControllerAdvice

전역 예외 처리를 위한 컨트롤러 어드바이스를 정의하며 모든 컨트롤러에서 발생하는 예외를 처리한다.

 

 

@CrossOrigin

CORS(Cross-Origin Resource Sharing)를 설정하여 다른 도메인에서의 요청을 허용한다.

 

 

@Valid

객체의 유효성을 검증하기 위해 사용하며 유효성 검증 애노테이션과 함께 사용된다.

 

 

@NotNull, @Size, @Email 등 (유효성 검증 애노테이션)

객체의 필드에 대한 유효성 검증 제약 조건을 지정한다.

 

 

@JsonProperty

JSON 직렬화/역직렬화 시 필드의 이름을 지정하거나 접근 수준을 설정한다.

 

 

@JsonIgnore

특정 필드를 JSON 직렬화/역직렬화 과정에서 무시한다.

 

 

@JsonInclude

조건에 따라 필드를 JSON에 포함하거나 제외한다.

 

 

@Autowired

스프링 컨테이너에서 빈을 자동으로 주입받는다.

 

 

@Service

비즈니스 로직을 처리하는 서비스 계층의 클래스를 나타낸다.

 

 

@Repository

데이터 액세스 계층을 나타내며 데이터베이스 예외를 스프링의 예외로 변환한다.

 

 

@RequestHeader

HTTP 요청의 헤더 값을 메서드 파라미터로 받을 때 사용한다.

 

 

@CookieValue

HTTP 요청에서 쿠키 값을 추출한다.

 

 

@ModelAttribute

요청 파라미터를 객체로 바인딩하거나 모델에 데이터를 추가할 때 사용한다.

 

 

@Component

스프링 컨테이너가 관리하는 일반적인 빈을 선언한다.

@Service나 @Repository를 사용할 수 없는 경우에 주로 사용된다

 

 

@Primary

여러 개의 빈 중 기본적으로 사용할 빈을 지정할 때 사용한다.

 

 

@RequestPart

multipart/form-data 요청에서 특정 부분을 바인딩한다.

파일 업로드 시 자주 사용된다.

 

 

@Transactional

데이터베이스 트랜잭션을 관리하기 위해 사용된다.

 

 

@EnableAsync

비동기 메서드를 활성화한다.

 

 

@Async

비동기 작업을 수행하는 메서드에 사용한다.

 

 

@EnableCaching

스프링의 캐싱 기능을 활성화한다.

 

 

@Cacheable

메서드 호출 결과를 캐시에 저장한다.

 

 

@EnableSwagger2 (또는 OpenAPI 3.x 사용 시 @Tag)

Swagger API 문서를 활성화한다.

 

 

@Tag (OpenAPI 3.x 기반 Swagger)

API 문서를 그룹화한다.

 

 

@Scheduled

메서드를 주기적으로 실행되도록 설정한다.

 

 

@EnableScheduling

스프링 스케줄링 기능을 활성화한다.

 

 

@ConfigurationProperties

프로퍼티 파일의 값을 매핑한다.

 

 

@Profile

특정 환경(프로파일)에서만 활성화되는 빈을 정의한다.

 

 

@ConditionalOnProperty

특정 프로퍼티가 존재하거나 특정 값을 가질 때만 빈을 활성화한다.

 

 

@Bean

메서드의 반환값을 스프링 컨테이너의 빈으로 등록한다.

 

 

@EnableWebMvc

스프링 MVC의 기본 구성을 활성화한다.