[스프링/Spring] 어노테이션(Annotation) 정리

dongbrown·2024년 6월 11일

Spring

목록 보기
2/23

1. Annotation이란?

사전상으로는 주석의 의미이지만 Java에서는 주석 이상의 기능을 가지고 있다. Annotation은 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종이다. 소스코드에 추가하면 단순 주석의 기능을 하는 것이 아니라 특별한 기능을 사용할 수 있다.

Annotation은 클래스와 메서드에 추가하여 다양한 기능을 부여하는 역할을 한다. Annotation을 활용하여 Spring Framework는 해당 클래스가 어떤 역할인지 정하기도 하고, Bean을 주입하기도 하며, 자동으로 getter나 setter를 생성하기도 한다.

이러한 Annotation을 통하여 코드량이 감소하고 유지보수하기 쉬우며 생산성이 증가한다.




2. 빈 자동 등록에 사용할 수 있는 annotation

@Repository

→ DAO 또는 Repository 클래스에 사용한다.

→ DataAccessException 자동변환과 같은 AOP의 적용 대상을 선정하기 위해서 사용된다.

@Service

→ Service Layer의 클래스에 사용한다.

@Controller

→ Presentation Layer의 MVC Controller에 사용한다.

→ 스피링 웹 서블릿에 의해 웹 요청을 처리하는 컨트롤러 빈으로 선정된다.

→ 계층별로 빈의 특성이나 종류를 구분하고 AOP Pointcut 표현식을 사용하면 특정 annotation이 달린 클래스만 설정이 가능하다. 그리고 특정 계층의 빈에 부가 기능을 부여할 수 있다.




3. Spring의 대표적인 Annotation과 역할

@Component

  • 개발자가 생성한 Class를 Spring의 Bean으로 등록할 때 사용하는 어노테이션이다.

@ComponentScan

  • @Component 및 streotype(@Service, @Repository, @Controller) 어노테이션이 부여된 Class들을 자동으로 스캔하여 Bean으로 등록해주는 역할을 하는 어노테이션이다.

@Bean

  • 개발자가 제어 불가능한 외부 라이브러리와 같은 것들을 Bean으로 만들 때 사용한다.

@RequestHeader

  • Request의 header값을 가져올 수 있으며, 해당 Annotation을 쓴 메소드의 파라미터에 사용한다.

@RequestMapping

  • @RequestMapping(value=”“)와 같은 형태로 작성하며, 요청 들어온 URI의 요청과 Annotation value 값이 일치하면 해당 클래스나 메소드가 실행된다.

  • Controller 객체 안의 메서드와 클래스에 적용 가능하다.

  • Class 단위에 사용하면 하위 메소드에 모두 적용된다.

  • 메소드에 적용되면 해당 메소드에서 지정한 방식으로 URI를 처리한다.

  • 요청 메소드가 GET, POST 모두 매핑 할 때 사용한다. (REST 방식으로 서비스 구현했을 때 사용)

@RequestParam

  • URL에 전달되는 파라미터를 메소드의 인자와 매칭시켜, 파라미터를 받아서 처리할 수 있다.

  • Json 형식의 Body를 MessageConverter를 통해 Java 객체로 변환시킨다.

@RequestBody

  • Body에 전달되는 데이터를 메소드의 인자와 매칭시켜, 데이터를 받아서 처리할 수 있다.

  • 클라이언트가 보내는 HTTP 요청(JSON, XML등)을 Java Object로 변환한다.

@Model

  • jsp에 데이터를 전달할 때 사용하는 객체
  • Spring에서 쓰는 공유 객체로 데이터만 저장한다.

@ModelAttribute

  • 클라이언트가 전송하는 HTTP parameter, Body 내용을 Setter 함수를 통해 1:1로 객체에 데이터를 바인딩한다.

  • RequestBody와는 다르게 HTTP Body 내용은 multipart/form-data 형태를 요구한다.

@ResponseBody

  • 메소드에서 리턴되는 값이 View로 출력되지 않고 HTTP Response Body에 직접 써진다.

  • json, xml등의 데이터를 return한다.

@Autowired

  • 필요한 의존 객체의 “타입”에 해당하는 Bean을 찾아 주입한다.

    (1) 생성자
    (2) setter
    (3) 필드

@GetMapping

  • 요청방식이 GET 일 때 → GET방식 일 때만 실행 (조회)

@PostMapping

  • 요청방식이 POST 일 때 → POST방식 일 때만 실행 (저장)

@PutMapping

  • 요청방식이 PUT일 때 → PUT방식 일 때만 실행 (수정)

@DeleteMapping

  • 요청방식이 DELETE 일 때 → DELETE방식 일 때만 실행 (삭제)


0개의 댓글