본문 바로가기

Web Sever 개발과 CS 기초/스프링

(45)
Spring MVC 구조와 사용법 Spring MVC 구조 @RestController public class testController{ @PostMapping("/test") public ResponseEntity addSentence( //비지니스 로직 } } 해당 컨트롤러 메소드는 GET /test 요청이 왔을 때 실행되는 코드를 담고 있다. 단순하게 어노테이션 작성만으로 HTTP 요청을 처리할 메소드를 지정할 수 있는 것은 Spring이 제공하는 MVC 구조 덕분이다. MVC 구조의 어떤 과정으로 HTTP 요청이 각 메소드로 전달되어 비지니스 로직을 처리할 수 있는 지 알아보자. 가장 기본적인 흐름은 HTTP 요청은 먼저 DispathcerServlet으로 전달된다. DispatcherServlet은 프론트 컨트롤러로서 모든 H..
스프링 컨테이너와 빈에 대한 이해 개요 목적 스프링은 다른 클래스의 객체를 사용할 때 직접 객체를 등록하는 방식이 아닌, 외부 컨테이너의 도움을 받아 객체를 주입 받고 사용한다. 이렇게 직접 객체를 생성하지 않고 컨테이너와 그 안에 등록된 객체=빈을 사용하면 얻는 장점이 무엇인지 그리고 동작 원리와 활용 방법은 무엇인지 알아본다 스프링 컨테이너와 빈의 필요성 스프링 프레임워크가 인기가 많아진 이유는 의존성 주입을 담당하는 컨테이너 관리기술 때문이다. 과거 자바에서 공식적으로 구현한 서버 개발 프레임 워크 EJB가 있었다. 이론적으로 좋은 기능들이 많이 포함되어 초기에는 인기가 많았지만, 코드가 너무 복잡하고 EJB에 종속된 코드로 자바의 객체 지향 스타일 장점을 전혀 활용하지 못했다. 그래서 자바의 객체 지향 코딩의 장점을 최대한 살려 ..
스프링 POJO 기반 구성 POJO란 프링의 본질은 엔터프라이즈 서비스 기능을 POJO에 제공하는 것이다 - Professional Spring Framework, 2005 스프링 프레임 워크 핵심 구현 목표인 POJO에 대해서 알아보자. POJO는 Plain Old Java Object, 단순한 자바 오브젝트을 의미한다. 다른 클래스나 인터페이스를 상속 받아 메소드가 추가된 클래스가 아닌 getter, setter 등 기본적인 기능만 가진 자바객체이다. 스프링 프레임 워크가 탄생하기 전 서버 개발 프레임 워크 EJB가 있었다. 이론적으로 좋은 기능들이 많이 포함되어 초기에는 인기가 많았지만, 코드가 너무 복잡하고 EJB에 종속된 코드로 자바의 객체 지향 스타일 장점을 전혀 활용하지 못했다. 그래서 자바의 객체 지향 코딩의 장점을..
Spring MVC 패턴이란 MVC 패턴에 대한 이해 MVC 패턴이란, 애플리케이션을 Model, View, Controller로 나누어서 구성하는 개발 방법이다. 우리가 스마트폰에서 자주 사용하는 “알람” 어플을 예시로 들어 Model, View,Cotroller 요소의 역할을 알아보자. 1. Model Model은 어플리케이션에 필요한 데이터를 저장하는 역할을 한다. 위 알람 어플에서 Model은 현재 저장되어 있는 알람 정보들과 새로운 알람 설정 시 필요한 데이터들을 저장한다. 새로운 알람 설정 버튼을 누르면 Model에 저장되어 있는 새로운 알람 설정 시 필요한 데이터들을 가져와 GUI로 보여주는 것이다. 2. View view는 사용자들에게 데이터를 시각적으로 보여주는 역할을 한다. 새로운 알람 설정을 눌렀을 때, Mode..
Spring MVC 테스트 코드 작성 법 MockMVC이란 MockMVC는 spring MVC 테스트 시 가짜 객체를 만들어, 서버를 직접 실행 시키지 않아도, Spring MVC동작을 재현해주는 클래스이다. MockMVC 객체를 통해, 클라이언트의 HTTP Request를 가정하고, 그에 따른, 서버의 HTTP Response를 테스트할 수 있다. MockMVC 테스트 예시 아래의 /api/message URI를 GET하면 ok상태 코드와 hello JSON메세지를 돌려주는 간단한 Controller를 테스트 해보겠다. @RestController public class GetController { @GetMapping("/api/message") public ResponseEntity getFromMessage() { String jsonM..

반응형