코드로 배우는 스프링 웹 프로젝트 - 컨트롤러

lacblueeun·2020년 11월 9일
3

Spring

목록 보기
4/6
post-thumbnail

스프링의 컨트롤러

컨트롤러란 클라이언트의 요청을 처리할 메서드를 구현
클라이언트는 요청의 URL로 요청을 전송한다.

1. @Controller

전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용합니다. @Contoller 어노테이션을 붙이면 핸들러가 스캔할 수 있는 빈(Bean) 객체가 되어 서블릿용 컨테이너에 생성됩니다.

2. @RestController

REST방식에서 기억해야 하는 점은 서버에서 전송하는 것이 데이터라는 것이다.
기존의 controller와 달리 뷰로 전달하는 방식이 아니므로 기존의 컨트롤러와 동장방식이 다르다.

🔑 REST(Representatinal State Transfer) : 하나의 URL은 하나의 고유한 리소스를 대표하도록 설계된다는 개념에 전송방식을 결합해서 원하는 작업을 지정하는 것

3. @Component vs @Bean 기억보다 기록을 이동욱님 블로그를 참고했습니다.

목적이 명확하지 않은 Bean을 생성할 때 사용하는 어노테이션인데 2개로 나누어진 이유는?

@Bean 의 경우 개발자가 컨트롤이 불가능한 외부 라이브러리들을 Bean으로 등록하고 싶은 경우에 사용한다. 이와 달리 @Component는 개발자가 직접 컨트롤이 가능한 class들의 경우에 사용한다.

💣 아직 많은 프로젝트를 경험하지 않아서 어떤 의미인지 잘 모르겠다. 나중에 프로젝트를 진행하면서 더 알아보도록 해야겠다.

4. @Service, @Repository

@Repository, @service 어노테이션은 해당 클래스를 루트 컨테이너에 빈(Bean) 객체로 생성해주는 어노테이션입니다.

@Service : 내부에서 자바로직을 처리한다.
@Repository : DB나 파일같은 외부 I/O 작업을 처리한다.

5. @RequestMapping

컨트롤러와 메서드에 @RequestMapping 애노테이션을 모두 사용하면 클래스에 적용한 값과 메서드에 적용한 값을 매핑하여 경로를 결정한다.
여러경로를 한 메서드에서 처리하고 싶다면 배열로 경로 목록을 지정하면 된다.
method를 이용해서 get과 post 사용 가능하다.

6. @PostMapping, @GetMapping

@PostMapping : HTTP POST 요청 그리고 패킷안에 숨겨서 데이터를 전송한다.
@GetMapping : HTTP GET 요청을 하면서 도메인 주소에 데이터가 노출된다. 헤더에 데이터를 붙여서 전송하기 때문이다.

🔑 GET 과 POST 방식의 차이점

HTTP 프로토콜을 이용해서 서버에 요청할 때 사용하는 방식인 대표적인 메소드로 GET과 POST의 차이에 대해서 아는 것은 중요하다!

GET : URL에 '?' 문자뒤에 key=value 형식으로 URL을 통해서 직접 전달한다. URL에 붙어서 전송하기 때문에 보낼 수 있는 데이터의 양에 한계가 있다.

POST : HTTP body에 전달하려는 정보를 포함해서 전달한다. 웹브라우저의 사용자의 눈에 보이지 않아서 보안적인 측면에서 좋다.

profile
Go for Frontend Developer 🧪

0개의 댓글