Spring_04_Controller 관련 Annotation

OngTK·2025년 8월 9일

Spring

목록 보기
4/25

1. Controller class 관련 어노테이션


1) @Controller : 컨트롤러 어노테이션

(1) @Component

Spring 컨테이너(메모리)에 bean을 등록·생성
☆★싱글톤 역할을 대체☆★

(2) Spring Controller : 기본적으로 HTTP 통신을 지원

2) @RestController

기존 Controller에 @ResponseBody를 내장하고 있음

@Controller 
// [1] 
// @Controller 어노테이션의 경우, ResponseBody 어노테이션을 내장하고 있지 않음
// 필요에 따라 REST 관련 메소드 상단에 @ResponseBody 선언해야함.
public class controller1 {}

@RestController 
// [2]
// @RestController 어노테이션은 ResponseBody 어노테이션을 내장하고 있으므로
// 메소드 별로 @ResponseBody를 선언해야 하는 번거로움이 적음
public class controller2 {}

2. Controller Class 내 메소드 어노테이션


1) @ResponseBody

  : Java가 사용하는 타입을 HTTP 언어인 JSON 타입으로 자동 변환·반환하는 어노테이션
  : Java에서 Method 실행 후 결과를 JSON으로 반환한다면, 해당 함수 위에 어노테이션 표기
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class controller1 {
    @ResponseBody
    public void method1() { }
}

2) Mapping 관련 : REST

NoAnnotationHTTP methodCRUD
(1)@PostMappingPOSTCreate
(2)@GetMappingGETRead
(3)@PutMappingPUTPut
(4)@DeleteMappingDELETEDelete

(5) @____Mapping("/URL정의")

URL 주소 정의하며 베이스 주소인 [http://localhost:8080] 뒤로 유도할 URL을 Mapping 뒤에 기재
한 URL 내에서 CRUD가 중복될 수 없음

(6) @RequestMapping("/URL정의")

class 위에 선언하며, 해당 클라스의 Mapping 어노테이션 메소드들의 공통 URL을 정의
만약 아래의 @RequestMapping에서 URL이 정의되어 있다면,
URL은 "/RequestMappingURL/@____MappingURL"으로 연결됨


@RestController
public class RestController1 {
      
    // [1]
    @GetMapping("/day03")
      // HTTP를 지원하며, Http Get Method 실행시 연결됨을 주석
      // URL : http://localhost:8080/day03
      // Http 요청 > Java method 실행 및 결과 반환 > 결과를 JSON 타입으로 변환
      // Class에 @RestController를 선언하였으므로, @ResponseBody 생략 가능!!
      public String method1(){
            System.out.println("method1 실행");
            return "Hello world!";
      }// func end

      // [2]
      @GetMapping("/day03")
      public boolean method2( @RequestParam(name = "name", defaultValue = "홍길동", required = false) String name ){
            // QueryString을 이용한 매개변수 전달
            // http://localhost:8080//day03/param1?name=""
            // 실행시 name이 콘솔로 들어오는 것을 알 수 있음
            return true;
      } //func end

      // [3]
      @GetMapping("/day03/param2")
      public int method3( String name, int age ) {
            System.out.println("RestController1.method3");
            System.out.println("name = " + name + ", age = " + age);
            return 3;
      }

      // [4]
      @DeleteMapping("/day03/param3")
      public String method4( @RequestParam Map<String, String> map){
            // Map
            //      key와 value를 한 entry로 하며, 여러 entry를 저장하는 구조
            //☆★☆★일반적으로 정해진 규칙이 아닌, 비규칙 구조인 Map을 사용할 경우, @RequestParam 필수!!
            return "안녕";
      } //func end
    
}

참고1. REST

1. 정의

웹의 자원을 관리하는 아키텍처

2. 특징

1) 자원(Resources), 행동(Method), 표현

2) HTTP 프로토콜을 이용하여 클라이언트와 서바 간의 일관성있는 통신을 구성

참고 2. REST API

1. REST 기반의 웹서비스 인터페이스를 구축

2. HTTP 요청을 통해 자원(데이터)의 CRUD 기능을 제공

참고3. RESTful API

1. REST API의 아키텍처를 잘 사용하는지에 대한 개념

2. 조건

1) 일관성 유지

2) 적절한 HTTP Method : Post(등록), Get(조회), Put(수정), Delete(삭제)

3) 무상태성

4) JSON / XML 형식으로 반환

profile
2025.05.~K디지털_풀스택 수업 수강중

0개의 댓글