📌 어노테이션이란?


🔥 자주 쓰는 Spring 어노테이션 정리

✅ 1. 빈 등록 관련

어노테이션 설명
@Component 일반적인 컴포넌트 클래스 등록
@Controller 웹 요청을 처리하는 컨트롤러 등록 (Spring MVC 전용)
@Service 비즈니스 로직 계층에 사용
@Repository DAO/DB 계층에 사용 (예외를 Spring DataAccessException으로 변환)
@Configuration 설정 클래스를 나타냄
@Bean 개발자가 직접 객체를 생성해서 등록할 때 사용

📌 @Component, @Service, @Repository, @Controller는 결국 모두 스프링 빈으로 등록되며, 내부적으로는 @Component 기반임.


✅ 2. 의존성 주입(DI) 관련

어노테이션 설명
@Autowired 타입 기준으로 빈을 주입 (필드, 생성자, 메서드에서 사용 가능)
@Inject 자바 표준 어노테이션 (javax) – @Autowired와 비슷
@Qualifier 같은 타입의 빈이 여러 개일 때 구분해서 주입
@Value 프로퍼티 값이나 환경 변수 주입
@RequiredArgsConstructor Lombok 어노테이션, final 필드에 대해 생성자 자동 생성

✅ 3. 웹 요청 처리 관련 (Spring MVC)

어노테이션 설명
@RequestMapping URL을 컨트롤러 메서드에 매핑 (GET, POST, 등 모두 지원)
@GetMapping, @PostMapping, @PutMapping, @DeleteMapping HTTP 메서드 전용 단축 어노테이션
@PathVariable URL 경로 변수 받기 (/user/{id}@PathVariable int id)
@RequestParam 쿼리 파라미터 받기 (?name=abc@RequestParam String name)
@RequestBody JSON 요청 본문을 객체로 변환해서 받음
@ResponseBody 객체를 JSON 형태로 반환
@RestController @Controller + @ResponseBody 합쳐진 것 (REST API 전용)

✅ 4. 기타 유용한 어노테이션

어노테이션 설명
@Transactional 트랜잭션 처리 – 실패 시 롤백
@Slf4j Lombok 제공 – 로그 객체 자동 생성 (log.info() 등 사용 가능)
@ExceptionHandler 예외 발생 시 실행될 메서드 지정
@ControllerAdvice 전역 예외 처리기 또는 공통 로직 처리용
@CrossOrigin CORS 허용 설정