Spring 자주 사용하는 어노테이션(Annotation)

김현찬·2025년 5월 7일

Annotaion

  • 자바에서 코드 사이에 특별한 의미나 기능을 수행하도록 하는 기술.

Annotaion의 종류

@SpringBootApplication

Spring Boot를 자동 실행해주는 어노테이션.
@Configuration, @EnableAutoConfiguration, @ComponentScan 이 세 가지를 한 번에 묶어준다.

언제 사용할까?

스프링 부트 프로그램을 실행할 때 메인 메서드가 있는 클래스에 선언하여 사용한다.

  • 스프링 부트 애플리케이션을 실행할 때, (자동 설정 + 컴포넌트 스캔 + 설정 클래스)역할을 일일이 작성하지 않고 최소한의 설정으로 애플리케이션을 실행할 수 있다.

@Configuration

스프링 컨테이너에 내가 정의한 메서드로 빈(스프링 컨테이너가 관리해주는 자바 객체)을 생성할 때 사용한다.

@ComponentScan

@Component, @Service, @Repository, @Controller, @Configuration가 붙은 클래스를 자동으로 스캔하여 빈으로 등록해준다.

@Component

직접 작성한 클래스를 빈으로 등록하기 위한 어노테이션이다.

@Service, @Repository, @Controller어노테이션의 상위 개념이다.

@Bean

자바 코드로 생성한 메서드가 반환하는 객체를 빈으로 등록해준다.

@Autowired

필드, 세터 메서드, 생성자에 사용하며, 필요한 빈을 자동으로 할당해준다.

@Controller

HTTP요청을 처리하는 클래스에 사용한다.

  • Spring MVC의 컨트롤러로 사용되는 클래스 선언을 단순화시켜준다.

@RestController

@Controller@ResponseBody가 결합된 어노테이션이다.

메서드 반환 결과를 JSON형태로 반환하며, @ResponseBody역할을 자동 수행한다.

@Controller와의 차이점

일반적인 @Controller 어노테이션은 API와 View를 동시에 사용할 때 사용하고, @RestController어노테이션은 View를 사용하지 않고, API만 사용할 때 사용한다.

@Service

비지니스 로직을 담당하는 클래스임을 나타낼 때 사용한다.

@Repository

데이터 접근 로직(DB에 접근하는) 기능을 갖춘 클래스에 사용한다.

@Resource

스프링에서 지원하는 의존성 주입 어노테이션으로, 필드명 혹은 지정한 이름과 같은 이름의 빈을 찾아서 주입한다. 만일 같은 이름의 빈이 없을 시 같은 타입의 빈을 주입한다.

@RequestMapping

요청 URL mapping 정보를 설정한다.
클래스 타입과 메소드에 설정 가능하다.
Controller method의 HTTP method를 한정할 수 있다.
같은 URL 요청에 대하여 HTTP method에 따라 서로 다른 메소드로 mapping 할 수 있다.

@PathVariable

URL 경로의 변수 값을 메서드 파라미터로 바로 주입해 준다.

따라서 /users/{userId} 에서 userId 자리에 들어온 값을 @PathVariable Long userId 로 받을 수 있다.

@RequestParam

HTTP 요청 파라미터 값을 메서드 매개변수에 자동으로 연결해준다.

@RequestHeader

HTTP 요청 헤더의 특정 값을 자동으로 컨트롤러 메서드의 파라미터 변수에 넣어준다.

@CookieValue

HTTP 요청의 쿠키 값을 컨트롤러 메서드 파라미터로 자동 주입해준다.

@RequestBody

HTTP요청의 Body에 담긴 데이터를 자동으로 자바 객체로 매핑하여 컨트롤러 메서드 파라미터에 주입해준다.

@ResponseBody

메서드 반환값을 뷰 대신 HTTP 응답으로 보내준다.

0개의 댓글