본문 바로가기

스프링(Spring)

[SpringMVC] API 계층(Controller)

시작하기

1. 애플리케이션의 경계를 설정하기, 요구 사항 수집하기

 

2. 패키지 구조 생성하기

 

 - 기능기반 패키지 구조

  - 기능을 위주로 패키지를 나누어 클래스들을 관리하는 방식을 뜻한다.

 

 - 계층기반 패키지 구조

   - Controller, DTO (API 계층) Model, Service(비지니스 계층), Repository(데이터 엑세스 계층) 으로 나누어서 클래스들 을 관리 하는걸

뜻한다.

 

3. 엔트리포인트 클래스 작성 (애플리케이션 시작점)

 

 - main() 메서드가 포함된 엔트리 포인트 클래스 작성이 필요하지만 ‘Spring Initializr’ 를 이용해서 생성한 프로젝트는 이미 작성이 되어있다

 

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication   // 1. 자동구성 활성화 2. @Component 조회해서Spring Bean으로 등록 3. @Configuration 조회 Spring Bean으로 등록
public class Section3Week1Application {

	public static void main(String[] args) {
    
		SpringApplication.run(Section3Week1Application.class, args); // Spring 애플리케이션을 부트스트랩(애플리케이션 실행전 설정작업하여 실행 가능한 애플리케이션 만드는 단계)하고 실행하는 역할
	}

}

 

4. Controller의 설계

 

 ex) 커피주문 애플리케이션 (Spring Boot 기반)

  • 주인이 커피 정보를 관리하는 기능 ( 커피정보 등록기능, 등록한 커피 정보 수정, 삭제, 조회 기능)
  • 고객이 커피 정보를 조회하는 기능 ( 커피정보 조회 기능)
  • 고객이 커피를 주문하는 기능 ( 커피 주문 등록, 수정, 삭제 기능)
  • 고객이 주문한 커피를 주인이 조회하는 기능 ( 커피 주문 조회 기능, 주문완료 처리 기능)

5. Controller의 구조 설계

 

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController   // 해당 클래스가 REST API의 리소스를 처리하기 위한 API 엔드포인트로 동작함을 정의
@RequestMapping("/v1/members")   // 클라이언트의 요청을 처리하는 핸들러 메서드를 매핑해주는 역할 (공통 URL 설정을 해준다)
//@RequestMapping은 클래스 레벨에서 해주게 되고 핸들러 메서드별로 달라지는 URI는 각각의 핸들러 메서드에 정의하게 된다
public class MemberController {
}

 

6. 핸들러 메서드 적용

 주로 CRUD(create, read, update, delete) 를 기억하면 쉽게 작성할수 있다 물론 컨트롤러에선 (post, get, patch,remove)로 작성해도 된다