Annotation이란?
사전적 의미로 주석을 뜻합니다. 자바에서 Annotation(@)은 코드 사이에 특별한 의미, 기능을 수행하도록 하는 기술로,
어노테이션을 사용하면 코드가 깔끔해지며 재사용이 가능합니다.
어노테이션의 역할
- 컴파일러에게 문법 에러를 체크하도록 정보를 제공
- 프로그램을 빌드할 때 코드를 자동으로 생성할 수 있도록 정보를 제공
- 런타임에 특정 기능을 실행하도록 정보를 제공
1. 컴포넌트 관련 어노테이션
- @Component
스프링의 빈(bean)을 등록하는 기본 어노테이션입니다. 클래스 위에 이 어노테이션을 붙이면, 해당 클래스는 스프링 IoC 컨테이너에 의해 관리되는 빈이 됩니다.
- @Service
@Component의 특수화된 형태로, 주로 서비스 계층에 사용됩니다. 비즈니스 로직을 담고 있는 클래스를 정의할 때 사용합니다. @Service를 사용하면 코드의 가독성이 높아지고, 서비스 클래스를 구분할 수 있습니다.
- @Repository
@Component의 또 다른 특수화된 형태로, 데이터 액세스 계층을 나타냅니다. 데이터베이스와의 상호작용을 담당하는 클래스에서 사용됩니다. 예외를 데이터베이스 관련 예외로 변환하는 기능도 제공합니다.
- @Controller
웹 애플리케이션의 컨트롤러 클래스를 정의할 때 사용됩니다. 사용자가 HTTP 요청을 보내면 해당 요청을 처리하는 메서드를 정의합니다. 이 어노테이션은 주로 MVC 패턴에서 사용됩니다.
- @RestController
@Controller와 @ResponseBody가 결합된 형태로, RESTful API를 구축할 때 사용됩니다. 클라이언트에게 반환되는 데이터는 뷰를 통해 렌더링되지 않고 JSON 또는 XML 형태로 반환됩니다.
2. 빈 주입 관련 어노테이션
- @Autowired
스프링 IoC 컨테이너에 등록된 빈을 자동으로 주입할 때 사용합니다. 클래스 필드, 생성자, 메서드에 사용할 수 있으며, 해당 빈을 자동으로 연결해줍니다.
- @Value
외부 설정 파일(application.properties, application.yml 등)에서 값을 주입받을 때 사용합니다. 이 어노테이션을 사용하여 값을 주입받을 수 있습니다.
3. 트랜잭션 관련 어노테이션
- @Transactional
메서드나 클래스에 붙여서 트랜잭션을 관리할 수 있게 해주는 어노테이션입니다. 이 어노테이션을 사용하면 데이터베이스의 일관성과 무결성을 보장할 수 있습니다.
4. 요청 매핑 관련 어노테이션
- @RequestMapping
HTTP 요청을 특정 메서드나 클래스와 매핑할 때 사용합니다. 이 어노테이션은 HTTP 요청의 URL, 메서드(GET, POST 등)를 기준으로 매핑할 수 있습니다.
- @GetMapping
@RequestMapping을 GET 요청에 특화한 형태로 축약한 어노테이션입니다. HTTP GET 요청을 처리하는 메서드를 지정할 때 사용합니다.
- @PostMapping
@RequestMapping을 POST 요청에 특화한 형태로 축약한 어노테이션입니다. HTTP POST 요청을 처리하는 메서드를 지정할 때 사용합니다.
- @PutMapping
@RequestMapping을 PUT 요청에 특화한 형태로 축약한 어노테이션입니다. HTTP PUT 요청을 처리하는 메서드를 지정할 때 사용합니다.
- @DeleteMapping
@RequestMapping을 DELETE 요청에 특화한 형태로 축약한 어노테이션입니다. HTTP DELETE 요청을 처리하는 메서드를 지정할 때 사용합니다.
- @PatchMapping
@RequestMapping을 PATCH 요청에 특화한 형태로 축약한 어노테이션입니다. HTTP PATCH 요청을 처리하는 메서드를 지정할 때 사용합니다.
5. 기타 유용한 어노테이션
- @RequestParam
HTTP 요청 파라미터를 메서드 파라미터로 받기 위해 사용합니다. 요청 URL에서 전송된 값을 메서드 매개변수로 쉽게 받을 수 있게 해줍니다.
- @PathVariable
URL 경로에서 변수를 추출하여 메서드 매개변수로 전달합니다. RESTful API에서 자주 사용됩니다.
- @RequestBody
HTTP 요청 본문에 담긴 JSON 데이터를 Java 객체로 변환하여 메서드 매개변수로 전달합니다.
- @ResponseBody
메서드가 반환하는 데이터를 HTTP 응답 본문에 직접 담아 보내기 위해 사용합니다. 주로 REST API에서 사용됩니다.
- @ExceptionHandler
특정 예외가 발생했을 때 이를 처리하는 메서드를 정의하는 데 사용됩니다. 예외를 처리하는 로직을 별도로 작성하여 코드의 유지 보수를 용이하게 합니다.
6. 테스트 관련 어노테이션
- @SpringBootTest
통합 테스트를 위한 어노테이션입니다. 스프링 부트 애플리케이션 컨텍스트를 로드하고, 애플리케이션의 모든 빈을 주입하여 통합 테스트를 실행할 수 있게 해줍니다.
- @MockBean
테스트 중에 특정 빈을 모킹(mocking)하는 데 사용됩니다. 주로 외부 API와의 통합 테스트를 진행할 때 유용합니다.
7. 스프링 부트 전용 어노테이션
- @SpringBootApplication
스프링 부트 애플리케이션의 진입점을 나타내는 어노테이션입니다. @Configuration, @EnableAutoConfiguration, @ComponentScan을 결합한 형태로, 스프링 부트 애플리케이션을 설정하고 실행할 수 있게 해줍니다.
'기타' 카테고리의 다른 글
[YOLO] Roboflow로 라벨링하기 (Multiclass Classification) (0) | 2025.04.09 |
---|---|
리액트 네이티브 (React Native)의 구조 및 동작 원리 (0) | 2025.04.04 |
블랙박스 테스트와 화이트박스 테스트 (0) | 2025.01.08 |
[Java] Static 변수와 Static 메소드 (0) | 2025.01.07 |
[DB] 데이터 베이스 기초 (1) | 2024.10.07 |