국비지원 공부 정리/SpringBoot

Spring Boot의 기초 어노테이션

worldstroy 2025. 4. 11. 11:50

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해 사용하는 것에 지나지 않는다.