본문 바로가기
Spring | SpringBoot

[SpringBoot] 어노테이션 (Annotation)

by hunbal 2023. 3. 14.
SMALL

어노테이션

자바에서 Annotation은 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술이다.
즉, 프로그램에게 추가적인 정보를 제공해주는 메타데이터라고 볼 수 있다.

 

 

@Autowired

속성(field), setter method, constructor(생성자)에서 사용하며 Type에 따라 알아서 Bean을 주입 해준다.

무조건적인 객체에 대한 의존성을 주입시킨다.

이 Annotation을 사용할 시, 스프링이 자동적으로 값을 할당한다.

Controller 클래스에서 DAO나 Service에 관한 객체들을 주입 시킬 때 많이 사용한다.

필드, 생성자, 입력 파라미터가 여러 개인 메소드(@Qualifier는 메소드의 파라미터)에 적용 가능하다.

Type을 먼저 확인한 후 못 찾으면 Name에 따라 주입한다.

 


@Controller

Spring의 Controller를 의미한다. Spring MVC에서 Controller클래스에 쓰인다.

 

@RestController (리액트와 연계 시 중요)

Spring에서 Controller 중 View로 응답하지 않는, Controller를 의미한다.

method의 반환 결과를 JSON 형태로 반환한다.

이 Annotation이 적혀있는 Controller의 method는 HttpResponse로 바로 응답이 가능하다.

@ResponseBody 역할을 자동적으로 해주는 Annotation이다.

@Controller + @ResponseBody를 사용하면 @ResponseBody를 모든 메소드에서 적용한다.

 

@Controller 와 @RestController 의 차이

 

@Controller

  • API와 view를 동시에 사용하는 경우에 사용한다.
  • 대신 API 서비스로 사용하는 경우는 @ResponseBody를 사용하여 객체를 반환한다.
  •  view(화면) return이 주 목적이다.

@RestController

  • view가 필요없는 API만 지원하는 서비스에서 사용한다.
  • Spring 4.0.1부터 제공
  • @RequestMapping 메서드가 기본적으로 @ResponseBody 의미를 가정한다.
  • data(json, xml 등) return이 주 목적이다.

 

즉, @RestController = @Controller + @ResponseBody 이다.

 


@ResponseBody

HttpMessageConverter를 이용하여 JSON 혹은 xml 로 요청에 응답할수 있게 해주는 Annotation이다.
view가 아닌 JSON 형식의 값을 응답할 때 사용하는 Annotation으로 문자열을 리턴하면

그 값이 http response header가 아닌 response body에 들어간다.

이미 RestController Annotation이 붙어 있다면, 쓸 필요가 없다.
허나 그렇지 않은 단순 컨트롤러라면, HttpResponse로 응답 할 수 있게 해준다.

만약 객체를 return하는 경우 JACKSON 라이브러리에 의해 문자열로 변환되어 전송된다.

context에 설정된 viewResolver를 무시한다고 보면된다.

 

@RequestMapping

요청 URL을 어떤 method가 처리할지 mapping해주는 Annotation이다.

Controller나 Controller의 method에 적용한다.

요청을 받는 형식인 GET, POST, PATCH, PUT, DELETE 를 정의하기도 한다.

요청 받는 형식을 정의하지 않는다면, 자동적으로 GET으로 설정된다.

 

@GetMapping

@RequestMapping(Method=RequestMethod.GET)과 같다.

ex) @GetMapping("boardList")

 

@RequestParam

@PathVariable과 비슷하다.request의 parameter에서 가져오는 것이다.

method의 파라미터에 사용된다.

?moviename=thepurge 와 같은 쿼리 파라미터를 파싱해준다.

HTTP GET 요청에 대해 매칭되는 request parameter 값이 자동으로 들어간다.

url 뒤에 붙는 parameter 값을 가져올 때 사용한다.

 

@Service

Service Class에서 쓰인다.비즈니스 로직을 수행하는 Class라는 것을 나타내는 용도이다.

 

@Repository

DAO class에서 쓰인다.DataBase에 접근하는 method를 가지고 있는 Class에서 쓰인다.

'Spring | SpringBoot' 카테고리의 다른 글

[SpringBoot] JSON 데이터 DB 파싱 오류 및 해결  (0) 2023.08.09

댓글