관리 메뉴

이사작전.com IT Blog

스프링 빈, @RequestMapping, @Controller, @RestController란? 본문

A series of lectures/[면접 직전에 보는] Spring Framework

스프링 빈, @RequestMapping, @Controller, @RestController란?

말랑고양 플랫폼공작소 2019.02.04 21:21

[스프링 어노테이션 정리] 

01. 스프링 빈, @RequestMapping, @Controller, @RestController란?


안녕하세요. 이사작전.com 플랫폼공작소입니다. 오늘은 스프링에서 가장 중요한 어노테이션을 소개하려합니다. 혹시 잘못된 부분이 있다면 지적해주세요. 스프링 빈을 설명하기 전에 객체의 개념을 잠깐 짚고 넘어가겠습니다.


0. 객체 vs 클래스

- 객체란 사물(붕어빵)을 의미하고, 클래스란 그 사물을 만들기 위한 설계도 또는 도면(붕어빵 기계)을 의미합니다.

객체와 클래스를 설명할 때, 붕어빵 비유를 빠뜨릴 수 없습니다.



클래스는 붕어빵 기계 그리고 인스턴스는 붕어빵이라고 비유됩니다. 객체를 설명하기 위해서, 인스턴스를 조금 더 알아봅시다. 반죽을 넣고 앙금을 넣어 비로소 만질 수 있는 빵이 되었을 때 인스턴스라고 부릅니다. 이것을 '클래스가 실체화되었다.' 라는 표현을 하는데요 그것은 즉, 메모리에 할당된 것을 의미합니다.


여기서 인스턴스와 객체의 차이점이 나타납니다.

전자는 메모리에 할당된 것이고, 후자는 메모리에 할당된 것이 아닌 것이죠.

즉, 메모리 할당 여부에 따라서 차이가 있는 것입니다. 그것을 제외한다면 몹시 유사하게 동일한 개념이지만 말이죠.


정리하자면, 클래스가 new 연산자에 의해서 실체화 될 때 생성된 인스턴스는 메모리의 힙 영역(Heap Area)에 저장됩니다.

reference : https://gmlwjd9405.github.io/2018/09/17/class-object-instance.html


1. 자바빈이란?

 - JavaBean규격서에 따라 작성된 자바클래스이다. 자바빈 클래스에는 파라미터가 없는 생성자가 반드시 있어야 하며, 클래스 외부에서 필드에 접근할때에는 반드시 메소드를 통하여 접근해야 하며 이때 get, set 으로 시작하는 메소드를이용한다. reference : https://thositeom.tistory.com/entry/프로퍼티property-란


2. 스프링 빈 = 자바 객체 = 빈 객체

- 빈은 (스프링 Ioc 컨테이너에 의해서 인스턴스화되어 조립되거나 관리되는) 객체를 말합니다.

- 스프링 빈과 자바 객체와의 차이점은 없습니다.

reference : https://endorphin0710.tistory.com/93


3. @Controller

시스템으로 들어오는 요청을 담당합니다.

- 간단하게 다음 페이지로 이동하는 작업도 가능하고

- DB에서 데이터를 읽어 리턴하도록 작성하는 것이 일반적입니다.


4. @RequestMapping

- 이런이런 URL 요청이 들어왔을 때, 어떤 메서드가 담당할지 알려주는 어노테이션입니다.


5. @Controller와 RequestMapping 사용예제

1
2
3
4
5
6
7
8
9
10
@Controller
public class TestController{
    
    @RequestMapping("/main")
    public String goToMain(){
        
        ... (생략)
 
    }    
}
cs

6. @RestController = 컨트롤러 + 리스폰스바디

- 스프링 4 부터 등장.

- 컨트롤러 대신에 위 어노테이션 선언하면 리스폰스바디 안써도 됨. 

- 왜냐면 위 어노테이션에 리스폰스바디가 포함되어 있기 때문.


7. RestController vs @Controller

- 전자는 리스폰스바디를 안써도되고

- 후자는 리스폰스바디를 써야함.

- 아래의 예제로 전자와 후자를 비교해보겠습니다.

추가로 궁금한 점이 있다면 댓글에 남겨주세요.

다음 포스팅은 @RequestBody, @ResponseBody(리스폰스바디), @ModelAttribute에 대해서 알아보겠습니다.

다음 포스팅으로 이동 : https://doctorson0309.tistory.com/406

0 Comments
댓글쓰기 폼