🎈 keep updating
[Spring]Spring Annotation의 종류와 그 역할을 참고하여 작성하였습니다.
component-scan을 선언으로 패키지 안의 클래스들을 스캔하고, @Component Annotation이 있는 클래스에 대하여 bean을 생성
bean으로 클래스를 등록한다.
Spring Framework가 각각의 어노테이션이 달린 클래스를 Controller, Service, Repository로 인식하게 된다.
@Controller + @ResponseBody
@ResponseBody를 모든 메소드에서 적용한다.
메소드의 반환결과 문자열을 JSON형태로 반환한다.
⚫ @Controller와 @RestController의 차이
⚫ @Controller : API와 View를 동시에 사용하는 경우. 대신 API서비스를 사용하는 경우에는 @ResponseBody 어노테이션을 사용해서 객체를 반환함. view의 return이 주 목적이다.
⚫ @RestController : View가 필요없는 API만 지원하는 서비스에서 사용한다. (Spring 4.0.1부터 제공됨). @RequestMapping 메서드가 @ResponseBody의미를 가정한다. data의 return이 주 목적이다.
@RestController
@RequiredArgsConstructor
@RequestMapping("/auth")
public class AccountController {
private final AccountService accountService;
private final JwtUtil jwtUtil;
//회원가입
@RequestMapping(value="/signup", method=RequestMethod.POST)
public GlobalResponseDto signup(@Valid @RequestBody AccountRequestDto accountRequestDto) {
return accountService.signup(accountRequestDto);
}
//내가 하던 방식
@PostMapping("/auth/signup")
public GlobalResponseDto signup(@Valid @RequestBody AccountRequestDto accountRequestDto) {
return accountService.signup(accountRequestDto);
}
}
Class Level Mapping, Handler Level Mapping이 둘 다 적용 가능하다.
HTTP GET 요청에 대해 매칭되는 request parameter 값이 자동으로 들어간다.
url 뒤에 붙는 parameter 값을 가져올 때 사용한다.
HTTP 요청에 대해 매칭되는 request parameter 값이 자동으로 들어간다.
uri에서 각 구분자에 들어오는 값을 처리해야 할 때 사용한다.
REST API에서 값을 호출할 때 주로 많이 사용한다.
@GetMapping("/auth/{accountId}/tag")
public GlobalResponseDto getAccount(@PathVariable("accountId") int user,
@RequestParam(value = "tag", required = false) String tag)
반드시 HTTP POST요청에 대해서만 처리한다.
HTTP POST 요청에 대해 request body에 있는 request message에서 값을 얻어와서 매칭한다.
RequestData를 바로 Model이나 클래스로 매핑한다. 이를테면 JSON 이나 XML같은 데이터를 적절한 messageConverter로 읽을 때 사용하거나 POJO 형태의 데이터 전체로 받는 경우에 사용한다.
@RequestParam과 비슷하다. form값을 받아올 때 사용한다.