어노테이션
자바에서 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 |
---|
댓글