728x90
프리미엄 IT 교육 서비스 - 코드프레소
www.codepresso.kr
< 계층형 아키텍처의 이해 >
SW 아키텍처
- 건축을 할 때 설계도를 그려서 건물이 어떻게 지어질지 구상한다
- SW도 마찬가지로 실제 코드 개발 전에 최종 SW가 되어야 할 모습을 설계한다
- SW 아키텍처란, SW의 구조를 정의한 것으로 SW를 구성하는 주요 요소들과 요소들의 관계를 정의한 것이다
- SW 아키텍처 = SW 설계도 라고 볼 수 있다
SW 아키텍처/디자인 패턴
- 패턴 : 되풀이되는 사건이나 물체의 형태로, 예측 가능한 방식으로 되풀이 된다
- 우리가 만드는 SW도 이전의 수많은 사람들도 만들었고 고민했던 유형일 가능성이 높다
- 따라서 아키텍처/디자인 패턴이란, 특정 상황의 문제를 해결하기 위해 일반화된 솔루션이다
- 카카오톡과 같은 메신저 서비스 개발을 위한 패턴
- 웹 서비스 개발을 위한 패턴
- 데이터 분석 시스템 개발을 위한 패턴
계층형 아키텍처 패턴
- 다양한 분야에 사용되지만, 주로 웹 서비스 개발에 주로 사용되는 패턴이다
- 웹 서비스 개발에 적용되는 패턴은 보통 SW를 서로 다른 역할을 하는 3-4개의 계층으로 구분한다
- Presentation Layer - @Controller
- Application Layer - @Service
- Business Layer
- Data Access Layer - @Repository
- 계층 간에 호출을 하고 데이터를 주고 받으며 협력하며 전체 웹 서비스를 구성한다
- 각각의 역할 별로 계층을 나눠서 독립적으로 구현한다
< 컨트롤러의 구현 >
Spring Controller
- 계층형 아키텍처의 Presentation Layer에 해당한다
- Client(웹 브라우저, 모바일 앱)의 요청을 받는다
- Application Layer에 요청에 대한 처리를 위임한다
- Client에 최종 응답을 하는 역할을 한다
- view : Client가 요청에 대한 응답의 결과로 보게 되는 웹 페이지
- data : Client가 요청에 대한 응답으로 받는 데이터
Controller 코드
- Spring Contoller를 구현하기 위해서는 3개의 기본 Annotation이 사용된다
- @Controller와 @RestController
- Controller 역할을 하는 클래스를 지정한다
- 클래스 상단에 명시한다
- 하나의 스프링 어플리케이션은 여러 개의 Controller 클래스를 가질 수 있다
- @RequestMapping
- 특정 Request를 처리하는 메소드를 지정한다
- 클래스 또는 메소드 상단에 명시한다
Annotation
- Java 소스코드에 추가적인 정보를 제공하는 방법
- @ 으로 시작하며 클래스, 메소드, 멤버변수, 파라미터 등에 부착 가능하다
- 3가지 유형의 Annotation
- 자바 컴파일러에게 유용한 정보를 제공한다 -> 에러 등을 찾아내기 위해
- SW 툴에 의해 사용되어 코드 생성이나 추가 작업을 진행한다
- run-time 시 특정 동작을 추가적으로 실행한다
Controller 코드
- Framework 활용은 규칙을 지키는 것이다
- 약속된 Annotation들을 Spring Framework가 스캔한다
- Annotation이 부착된 코드들은 Spring Framework에 의해 관리되며, Spring Framework에 의해서 특정한 목적으로 사용된다
@Controller vs @RestController
- 공통점 : 대부분의 동작은 유사하다
- 요청을 받아서 처리하고 응답을 한다
- 차이점 : 응답하는 형태가 다르다
- @Controller : view를 응답한다 (html 파일 등)
- @RestController : data를 응답한다 (문자열, Json, xml 등)
@RestController의 활용
- 문자열을 return하면, 문자열을 화면에 출력하여 보여준다
- 즉, @RestController는 메소드가 반환하는 데이터 자체를 응답한다 = data 응답
@Controller
- 일반 @Controller를 사용 했을 땐, return하는 문자열은 html(혹은 view) 파일의 이름을 의미하게 된다
- 무조건 html만 해당하는 것은 아니지만, 어쨌든 문자열이 의미하는 view 파일로 응답한다
정리!
- Controller는 계층형 아키텍처에서 Presentation Layer의 요청과 응답 처리의 역할을 담당한다
- @Controller, @RestController, @RequestMapping이 기본 Annotation으로 사용된다
- Annotation은 SW 코드에 추가적인 정보를 제공하는 방식이며, Spring Framework는 약속된 Annotation을 인식하여 특정 작업을 수행한다
- @Controller은 HTML 파일과 같은 view를 @RestController는 문자열, JSON 등의 데이터를 응답한다
728x90
'코드프레소 체험단 > Spring Boot를 활용합 웹 개발' 카테고리의 다른 글
[Spring Boot 웹 개발 입문] Request 파라미터의 이해 (0) | 2022.02.03 |
---|---|
[Spring Boot 웹 개발 입문] RequestMapping과 URI, HTTP API의 개념 (0) | 2022.02.03 |
[Spring Boot 웹 개발 입문] Web의 기초 개념과 HTTP의 기초 활용 (2) (0) | 2022.01.28 |
[Spring Boot 웹 개발 입문] Web의 기초 개념과 HTTP의 기초 활용 (1) (0) | 2022.01.28 |
[Spring Boot 웹 개발 입문] 실습 환경 구성 및 실습 (0) | 2022.01.28 |
댓글