Spring MVC Controller

uudean·2023년 6월 11일
0

Spring

목록 보기
4/13

엔트리포인트 클래스

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 애플리케이션을 부트스트랩하고, 실행하는 역할

    부트 스트랩이란 ?
    애플리케이션이 실행되기 전에 여러가지 설정 작업을 수행하여 실행 가능한 애플리케이션으로 만드는 단계를 말함.


Controller 구조 작성

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을 사용하고 메서드 레벨에서는 단축 표현을 쓰는 것을 권장함.


ResponseEntity 적용

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);

0개의 댓글

관련 채용 정보