import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
// 엔트리포인트 클래스
@SpringBootApplication
public class Section3Week1Application {
public static void main(String[] args) {
SpringApplication.run(Section3Week1Application.class, args);
}
}
@SpringBootApplication
- 자동 구성을 활성화
- @Component가 붙은 클래스 검색후 Spring Bean으로 등록하는 기능을 활성화
- @Configuration이 붙은 클래스를 자동으로 찾아주고, 추가적으로 Spring Bean을 등록하는 기능을 활성화
SpringApplication.run
- Spring 애플리케이션을 부트스트랩하고, 실행하는 역할
부트 스트랩이란 ?
애플리케이션이 실행되기 전에 여러가지 설정 작업을 수행하여 실행 가능한 애플리케이션으로 만드는 단계를 말함.
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/v1/coffees")
public class Controller {
}
@RestController
- 해당 클래스가 REST API 의 리소스를 처리하기 위한 API의 엔드포인트로 동작
- 애플리케이션 로딩시 , Spring Bean으로 등록해줌
@RequestMapping
- 클라이언트의 요청과 클라이언트 요청을 처리하는 핸들러 매서드를 맵핑해주는 역할
- 클래스 레벨에 추가하여 클래스 전체에 사용되는 공통 URL 설정을 함
@RequestMapping 애너테이션 단축 표현
- @GetMapping : 서버의 리소스를 조회할 때 사용
- @PostMapping : 서버에 리소스를 등록(저장)할 때 사용
- @PutMapping : 서버의 리소스를 수정할 때 사용. 리소스의 모든 정보를 수정
- @PatchMapping : 서버의 리소스를 수정할 때 사용. 리소스의 일부 정보만 수정
- @DeleteMapping: 서버의 리소스를 삭제
일반적으로 클래스 레벨에서는 @RequestMapping을 사용하고 메서드 레벨에서는 단축 표현을 쓰는 것을 권장함.
JSON 형식의 문자열을 수동으로 작성할 때에 발생할 수 있는 문제점 개선하기 위해 사용
// 기존 JSON형식을 수동으로 작성
System.out.println("# email: " + email);
System.out.println("# name: " + name);
System.out.println("# phone: " + phone);
String response =
"{\"" +
"email\":\""+email+"\"," +
"\"name\":\""+name+"\",\"" +
"phone\":\"" + phone+
"\"}";
return response;
// ResponseEntity 적용
@PostMapping
public ResponseEntity postMember(@RequestParam("email") String email,
@RequestParam("name") String name,
@RequestParam("phone") String phone)
{
// (2) JSON 문자열 수작업을 Map 객체로 대체
Map<String, String> map = new HashMap<>();
map.put("email", email);
map.put("name", name);
map.put("phone", phone);
// (3) 리턴 값을 ResponseEntity 객체로 변경
return new ResponseEntity<>(map, HttpStatus.CREATED);