스프링 부트를 사용하여 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의 기본 구성을 활성화한다.
'Dev > Spring Framework' 카테고리의 다른 글
『Spring MVC』 필터, 인터셉터 (0) | 2024.11.26 |
---|---|
『Spring MVC』 메시지, 국제화 (0) | 2024.11.26 |
『Spring Core』 Bean Scopes (0) | 2024.11.19 |
『Spring Core』 Bean LifeCycle (2) | 2024.11.07 |
『Spring Core』 DI (Dependency Injection) (0) | 2024.11.07 |