Spring - 어노테이션
◆ Spring에서 자주 사용하는 어노테이션
Spring은 어노테이션을 사용하여 객체 생성, 의존성 주입, 웹 요청 처리, 트랜잭션 관리 등을 간편하게 수행할 수 있다.
1. Bean 등록
Spring이 객체를 생성하여 Spring Container에 등록할 때 사용하는 어노테이션이다.
| 어노테이션 | 설명 |
|---|---|
@Component |
Spring Bean으로 등록하는 기본 어노테이션 |
@Service |
비즈니스 로직을 담당하는 Service Bean |
@Repository |
DB 접근(DAO, Repository) Bean |
@Controller |
Spring MVC Controller |
@RestController |
REST API Controller (@Controller + @ResponseBody) |
@Configuration |
설정(Configuration) 클래스 |
@Bean |
메서드에서 반환한 객체를 Bean으로 등록 |
2. 의존성 주입(DI)
Spring Container에 등록된 Bean을 자동으로 주입할 때 사용한다.
| 어노테이션 | 설명 |
|---|---|
@Autowired |
Bean 자동 주입 |
@Qualifier |
동일한 타입의 Bean이 여러 개일 때 지정하여 주입 |
@Primary |
기본 Bean으로 우선 선택 |
3. 웹 요청 처리
Spring MVC에서 HTTP 요청을 처리할 때 사용하는 어노테이션이다.
| 어노테이션 | 설명 |
|---|---|
@RequestMapping |
URL 요청 매핑 |
@GetMapping |
GET 요청 처리 |
@PostMapping |
POST 요청 처리 |
@PutMapping |
PUT 요청 처리 |
@DeleteMapping |
DELETE 요청 처리 |
@PatchMapping |
PATCH 요청 처리 |
4. 요청 데이터 처리
클라이언트가 전달한 데이터를 Controller에서 받을 때 사용한다.
| 어노테이션 | 설명 |
|---|---|
@RequestParam |
쿼리 파라미터 값 받기 |
@PathVariable |
URL 경로 값 받기 |
@RequestBody |
JSON 데이터를 객체로 변환 |
@ResponseBody |
객체를 JSON 형태로 반환 |
@ModelAttribute |
폼(Form) 데이터를 객체로 바인딩 |
5. 응답 처리
클라이언트에게 응답을 반환할 때 사용한다.
| 어노테이션 | 설명 |
|---|---|
@ResponseStatus |
HTTP 상태 코드 지정 |
@ResponseBody |
객체를 JSON으로 반환 |
@RestController |
모든 메서드에 @ResponseBody 적용 |
6. 예외 처리
예외를 처리할 때 사용하는 어노테이션이다.
| 어노테이션 | 설명 |
|---|---|
@ExceptionHandler |
특정 예외 처리 |
@ControllerAdvice |
모든 Controller의 공통 예외 처리 |
@RestControllerAdvice |
REST API 공통 예외 처리 |
7. 트랜잭션
데이터베이스 작업을 하나의 작업 단위로 관리한다.
| 어노테이션 | 설명 |
|---|---|
@Transactional |
트랜잭션 시작 및 관리 |
8. 값(Value) 주입
설정 파일(application.properties, application.yml)의 값을 가져올 때 사용한다.
| 어노테이션 | 설명 |
|---|---|
@Value |
설정 값을 변수에 주입 |
9. 환경 설정
Spring 설정 클래스를 작성할 때 사용한다.
| 어노테이션 | 설명 |
|---|---|
@Configuration |
설정 클래스 지정 |
@Bean |
Bean 등록 |
10. 테스트
Spring 테스트에서 사용하는 어노테이션이다.
| 어노테이션 | 설명 |
|---|---|
@SpringBootTest |
Spring Boot 테스트 |
@MockBean |
Mock Bean 등록 |
@Autowired |
테스트 객체 주입 |
11. Bean Scope
Bean의 생성 범위를 지정한다.
| 어노테이션 | 설명 |
|---|---|
@Scope("singleton") |
Singleton (기본값) |
@Scope("prototype") |
사용할 때마다 새로운 객체 생성 |
@RequestScope |
HTTP 요청마다 새로운 Bean 생성 |
@SessionScope |
세션마다 새로운 Bean 생성 |
댓글남기기