Annotation이란?
• Annotation(@) 는 사전적 의미로 주석 |
• Java에서 @ 로 시작하는 문법 요소로, 코드에 메타데이터를 추가하는 방법 |
• 코드 사이에 주석처럼 쓰이지만, 단순 주석과 달리 특별한 의미와 기능을 수 행하게 함 |
Annotation 장점과 사용법
장점 | 사용 순서 |
• 코드량 감소 | • @ 를 정의한다. |
• 유지보수 쉬움 | • 클래스에서 @를 배치한다. |
• 생산성 증가 | • 코드가 실행되는 중 추가 정보를 획득해 기능을 실시한다. |
Spring Boot Annotation 종류
어노테이션 | 의미 |
@SpringBootApplication | ![]() |
• Spring Boot 어플리케이션 실행 초기 진입점에 위치하는 어노테이션 | |
• 애플리케이션의 구성을 자동으로 설정 | |
• 애플리케이션 패키지 내의 모든 컴포넌트를 스캔하고 빈으로 등록 | |
• 해당 어노테이션이 달린 클래스가 있는 패키지를 베이스 패키지로 간주 | |
@Component | ![]() |
• 일반적인 스프링 관리 컴포넌트를 나타냄 | |
• 클래스를 스프링의 컴포넌트로 표시 | |
• 컴포넌트 스캔 대상이 되어 자동으로 빈으로 등록됨 | |
• @Service, @Repository, @Controller 의 기본이 되는 어노테이션 | |
• 개발자가 직접 작성한 클래스를 스프링 관리하에 두기 위해 사용 | |
• 즉, 간단하게 Bean 을 등록하기 위해 사용되는 Annotation | |
@Controller | ![]() |
• 클래스를 스프링의 컨트롤러로 표시 | |
• 요청 매핑 어노테이션 (@GetMapping, @PostMapping 등) 과 함께 사용해 HTTP 요청을 특정 메서드에 매핑 | |
• 뷰 이름을 반환하거나 ResponseBody를 사용하여 직접 응답 생성 가능 | |
@RestController | ![]() |
• RESTful 웹 서비스의 컨트롤러를 정의 | |
• @Controller, @ResponseBody 를 결합한 어노테이션 | |
• 모든 요청 처리 메서드의 반환 값을 HTTP 응답 본문으로 직접 전송 | |
• JSON 또는 XML 형식의 데이터를 쉽게 반환 | |
@Service | ![]() |
• 비즈니스 로직을 처리하는 서비스 클래스를 정의 | |
• 클래스를 스프링의 서비스 컴포넌트로 표시 | |
• 컴포넌트 스캔 대상이 되어 자동으로 빈으로 등록 | |
• 주로 비즈니스 로직을 포함하는 클래스에 사용됨 | |
• 즉, 실제 기능을 수행하는 코드가 있는 위치를 스프링 컨테이너가 찾아가도록 함 | |
@Repository | ![]() |
• 데이터 접근 계층의 DAO(Data Access Object)를 정의 | |
• 데이터베이스 예외를 스프링 데이터 접근 예외로 변환 | |
• JPA 리포지토리와 함께 사용하면 쿼리 메소드를 자동으로 구현해줌 | |
@Autowired | ![]() |
• 스프링 컨테이너에 등록한 Bean 에게 의존 관계 주입이 필요할 때, DI (의존성 주입) 을 가능하게 하는 어노테이션 | |
• 스프링 컨테이너가 해당 타입의 빈을 찾아 자동으로 주입 | |
• 생성자, 세터, 필드에 사용 가능 | |
@RequestMapping | ![]() |
• HTTP 특정 요청을 특정 핸들러 메서드에 매핑하는데 사용 | |
• 클래스 레벨과 메소드 레벨 모두에서 사용 가능 | |
• 클래스 레벨에서 사용 시 해당 컨트롤러의 모든 핸들러 메서드에 적용됨 | |
@{HTTP_Method}Mapping | ![]() |
맞는 메팽, 주소에 따라 넘어온 프론트의 요청을 처리하는 컨테이너 | |
@RequestParam | ![]() |
• HTTP 요청 파라미터를 메서드 파라미터에 바인딩 | |
• URL의 쿼리 파라미터나 폼 데이터를 메서드 파라미터로 받아옴 | |
• 필수 여부, 기본 값 등을 지정 가능 | |
@PathVariable | ![]() |
• URL 경로에 있는 변수 값을 추출하여 메서드 파라미터로 전달 | |
• RESTful API 설계에서 자주 사용됨 | |
@ModelAttribute | ![]() |
• 요청 파라미터를 객체에 바인딩하고, 해당 객체를 모델에 추가 | |
• HTTP 요청 파라미터를 지정된 객체의 프로퍼티에 바인딩 | |
• 객체를 자동으로 모델에 추가하여 뷰에서 사용할 수 있게 함 | |
• 폼 데이터를 받아 처리할 때 주로 사용됨 | |
@Bean | ![]() |
• 스프링 컨테이너에 의해 관리될 빈 객체를 생성하는 메서드를 표시 | |
• 메서드가 반환하는 객체를 스프링 컨테이너의 빈으로 등록 | |
• 주로 @Configuration 클래스 내에서 사용됨 | |
• 서드파티 라이브러리(개발자가 직접 제어가 불가능한 외부 라이브러리 등) 의 클래스를 빈으로 등록할 때 유용 | |
@Congifuration | ![]() |
• 해당 클래스가 하나 이상의 @Bean 메서드를 선언하고 있음을 나타냄 | |
• 클래스를 Spring 의 설정 클래스로 지정 | |
• @Bean 어노테이션이 붙은 메서드를 통해 Bean 을 정의 가능 | |
#. 어디까지나 스프링부트 프로젝트를 설정하기 위한 기초적인 어노테이션으로 세상에는 수천개 이상의 다양한 어노테이션이 있다. #. 우리는 Build.gradle에서 그 다양한 기능이 저장되어 있는 패키지를 등록해 import해 사용하는 것에 지나지 않는다. |
'국비지원 공부 정리 > SpringBoot' 카테고리의 다른 글
Layered Architecture - 어플리케이션의 구조 (0) | 2025.04.13 |
---|---|
스프링에서 데이터베이스에 접근하는 방법 (0) | 2025.04.12 |
스프링부트의 의존성 주입 (@Bean, @Configuration, @Component, @Autowired (0) | 2025.04.11 |
Spring Boot를 이용해 데이터 주고받기 (0) | 2025.04.10 |
JAVA에 존재하는 객체 - DTO, VO, (0) | 2025.04.10 |