Annotation(어노테이션)"은 프로그래밍 언어나 프레임워크에서 코드에 부가적인 정보를 제공하기 위해 사용되는 메타데이터의 형태입니다.
주석(comment)과는 다르게 코드에 직접 부착되어 의미를 전달하고, 컴파일러나 런타임 환경에서 해당 정보를 활용할 수 있도록 합니다.
@Controller: 웹 애플리케이션의 컨트롤러 클래스를 선언할 때 사용되며, HTTP 요청을 처리합니다.
@Service: 비즈니스 로직을 처리하는 서비스 클래스를 선언할 때 사용됩니다.
@Repository: 데이터베이스와의 상호작용을 위한 데이터 액세스 객체를 선언할 때 사용됩니다.
@Autowired: 의존성 주입(Dependency Injection)을 위해 사용되며, 해당 필드나 메소드의 의존성을 자동으로 주입합니다.
@Component: 일반적인 스프링 빈을 선언할 때 사용됩니다.
@RequestMapping: 메소드 또는 클래스 레벨에서 URL 매핑을 지정하여 HTTP 요청과 매핑하는 데 사용됩니다.
@PathVariable: URL 경로에 포함된 변수를 매개변수로 받아오기 위해 사용됩니다.
@RequestBody: HTTP 요청의 본문(body)에서 데이터를 추출하여 메소드 파라미터로 바인딩할 때 사용됩니다.
@ResponseBody: 메소드의 리턴 값을 HTTP 응답의 본문(body)에 직접 쓰기 위해 사용됩니다.
@RequestParam: HTTP 요청의 파라미터 값을 메소드 파라미터로 받아오기 위해 사용됩니다.
@GetMapping, @PostMapping, 등: 특정 URL 패턴과 HTTP 메소드에 매핑되는 메소드를 선언할 때 사용됩니다.
@Configuration: 스프링의 설정 파일임을 나타내는 클래스에 사용됩니다.
@Bean: 스프링 빈을 생성하는 메소드에 사용되며, 빈을 컨테이너에 등록합니다.
@Qualifier: 같은 타입의 빈이 여러 개일 때 특정 빈을 선택하기 위해 사용됩니다.
@Valid: 입력 값의 유효성 검사를 위해 사용되며, 주로 폼 데이터나 요청 데이터의 유효성을 검사합니다.