일단 씻고 나가자
[스프링 부트 핵심 가이드] 04. 스프링 부트 애플리케이션 개발하기 본문
(본 포스팅은 해당 도서의 정리 및 개인 공부의 목적 포스팅임을 밝힙니다.)
장정우, 『스프링 부트 핵심 가이드 : 스프링 부트를 활용한 애플리케이션 개발 실무』, 위키북스, 2022
04. 스프링 부트 애플리케이션 개발하기
스프링 부트 애플리케이션을 단계별로 개발하는 과정에서 익혀야 할 지식에 대해 소개한다.
4.1 프로젝트 생성
- 인텔리제이 IDEA
- Spring Initializr
대표적인 두 가지의 스프링 부트 프로젝트를 쉽게 만드는 방법이 존재한다.
4.1.1 인텔리제이 IDEA에서 프로젝트 생성하기
인텔리제이 IDEA 얼티밋 버전에선 내장된 spring initializr으로 쉬운 프로젝트 생성을 지원한다.
- 인텔리제이 실행.
- [New Project] -> [Spring Initializr] -> Language, Type, Packaging 등의 프로젝트 설정. -> [next]
- spring web, lombok 등의 주요 의존성 추가.
- [finish]
4.1.2 스프링 공식 사이트에서 프로젝트 생성하기
스프링의 공식 사이트에서 지원하는 스프링 부트 자동 생성 기능 서비스를 이용한다.
- https://start.spring.io 접속.
- Language, Type, Packaging 등의 프로젝트 설정.
- [ADD DEPENDENCIES] -> spring web, lombok 등의 주요 의존성 추가.
- [GENERATE] -> 다운된 압축 파일 원하는 경로에 해제.
- 인텔리제이 실행.
- 최초 화면 [Projects] -> [Open] -> 압축 해제 파일 선택.
- [Trust Project] -> 설정 및 초기화 과정 기다리기.
4.2 pom.xml(Project Object Model) 살펴보기
pom.xml 파일은 메이븐의 기능을 사용하기 위한 작성 파일.
프로젝트, 의존성 라이브러리, 빌드 등의 정보와 프로젝트 관리 내용이 기술돼 있음.
4.2.1 빌드 관리 도구
빌드 관리 도구란 JVM, WAS가 작성된 프로젝트를 인식하고 실행할 수 있게끔 작성된 소스코드와 프로젝트에 사용된 파일들(.xml, .jar, .properties)을 빌드하는 도구. 개발 규모에 따라 라이브러리 간 버전 호환성을 체크하는 데에 이용.
4.2.2 메이븐
메이븐(Maven)은 자바 기반 프로젝트를 빌드하고 관리하는 도구. 초창기의 Ant를 대체하기 위해 개발.
pom.xml 파일에 필요한 라이브러리를 추가하면 해당 라이브러리에 종속된 라이브러리까지 함께 관리.
메이븐의 사용 빈도가 높긴 하지만, 안드로이드에서 그레이들을 표준 빌드 도구로 채택하는 등 최근엔 그레이들(Gradle)로 빌드 도구로 전환되는 추세이다.
메이븐의 기능은 크게 4가지로 구분된다.
- 프로젝트 관리 // 프로젝트 버전, 아티팩트 관리.
- 빌드 및 패키징 // 의존성 관리 및 설정 패키지 형식으로 빌드 수행.
- 테스트 // 빌드 수행 이전 단위 테스트를 통한 애플리케이션의 코드 정상 동작 여부 확인.
- 배포 // 패키지를 원격 저장소에 배포.
메이븐의 생명주기
우측의 [Maven] 탭에서 생명주기를 확인할 수 있다.
크게 기본 생명주기(Default Lifecycle), 클린 생명주기(Clean Lifecycle), 사이트 생명주기(Site Lifecycle) 3가지로 구분된다.
각 생명주기에는 단계(phase)가 존재하며, 이전 단계가 선행되어야 다음 단계가 실행될 수 있다.
클린 생명주기
- clean : 이전 빌드의 모든 생성 파일 제거.
기본 생명주기
- validate : 프로젝트 빌드 시 필요한 모든 정보를 사용할 수 있는지 검토.
- complie : 프로젝트 소스 코드 컴파일.
- test : 단위 테스트 프레임워크로 테스트 실행.
- package : 컴파일한 코드를 JAR 등의 형식으로 패키징.
- verify : 패키지가 유효한지와 일정 기준을 충족하는지 검사.
- install : 프로젝트를 사용하는 데 필요한 패키지를 로컬 저장소에 저장.
- deploy : 프로젝트를 통합 혹은 다른 곳에 공유하기 위해 원격 저장소에 패키지 복사.
사이트 생명주기
- site : 메이븐의 설정 파일 정보 기반 프로젝트 문서 사이트 생성.
- site-deploy : 생성된 사이트 문서를 웹 서버에 배포.
4.3 Hello World 출력하기
본격적인 스프링 부트 입문에 앞서 'Hello World!'를 출력해보고 기본적인 사용법을 알아보자.
4.3.1 컨트롤러 작성하기
컨트롤러란 애플리케이션의 사용자 혹은 클라이언트의 요청에 따라 응답하는 클래스들을 일컫는다.
아키텍쳐에 의해 프로젝트 하위에 'controller'라는 패키지를 생성하고 그 내부에 관련 클래스를 모은다.
- 좌측의 프로젝트 및 하위 폴더 목록을 확인.
- [프로젝트 명] -> [src] -> [main] -> [java] -> [com.springboot.프로젝트 명(hello)] 마우스 우클릭 ->
[New] -> [Package] -> [패키지명 입력 (controller의 예시에 대해 학습하므로, 'controller' 패키지를 만든다)] - [패키지 명 (controller)] 마우스 우클릭 -> [New] -> [Java Class] -> [클래스명 입력 (HelloController)] -> [class] 선택 -> [Enter]
간단하게 자신의 로컬 호스트에서 "hello"라는 URI 요청을 받으면, 웹에 "Hello World!"를 출력하는 것으로 응답하는 코드를 작성해보자. 코드는 다음과 같다.
4.3.2 애플리케이션 실행하기
해당 작성한 코드의 동작을 확인해보기 위해 실행해보자.
자바와 같이 run을 누르면 되지만, 차이점은 해당 클래스를 실행하는 것이 아닌 해당 어플리케이션 전체를 실행하는 클래스를 실행해야 한다. (자바의 main의 역할과 같다.)
[com.springboot.프로젝트 명(hello)] 의 하위 클래스 [프로젝트명(Hello) + Application.java]로 가서 우측 상단의 초록색 삼각형 (Run 'HelloApplication.java') 클릭.
그럼 하위의 콘솔창에 다음과 같은 작업들이 나오고, 서버가 실행된다.
4.3.3 웹 브라우저를 통한 동작 테스트
로컬 호스트를 통해 서버를 실행하므로 인터넷에서 자신의 로컬 호스트에 접속하면 결과물을 확인할 수 있다.
(이때 해당 서버(프로젝트)는 실행 중이어야 하며, Stop 하면 안 된다.)
자신의 로컬 호스트 주소는 'http://localhost:8080' 이며, 이후 '/~~' 를 통해 요청이 전달된다.
우리는 위의 코드에서 controller 부의 함수를 @RequestMapping("/hello") 으로 작성했고,
이는 'http://localhost:8080/hello'의 응답에 대한 출력을 함수 public String hello() 으로 작성했다는 것을 의미한다.
4.3.4 Talented API tester를 통한 동작 테스트
로컬 호스트를 접속한 웹 브라우저로의 동작 테스트는 간편하지만 상세한 응답을 확인할 수 없다.
HTTP 헤더나 쿼리와 파라미터를 통한 요청 확인을 위해 아래의 구글 크롬 확장 프로그램을 사용해보자.
Talend API Tester - Free Edition
Visually interact with REST, SOAP and HTTP APIs.
chrome.google.com
위의 사이트에 접속 -> 우측 상단의 파란색 버튼 [Chrome에 추가] -> [확장 프로그램 추가] -> 우측 상단에 설치 완료
-> 우측 상단의 퍼즐 모양 [확장 프로그램] 클릭 -> [전체 엑세스] -> [Talented API Tester - Free Edition] 클릭
-> [Use Talented API Tester - Free Edition] 클릭
웹 브라우저로 요청을 확인 해본 것처럼 해당 툴을 이용하여서도 확인해보자.
페이지 가장 상단의 [DRAFT] 란의 [METHOD]를 선택하고 확인할 URI를 입력하면 된다.
여기서 주의할 점은 기본값은 "https://" 로 되어 있는데, 이를 "http://" (s를 제거) 로 바꾸고 요청하여야 한다.
웹 브라우저 방식과 동일하게 [METHOD] 를 "GET"으로 두고, 좌측 란에 "http://localhost:8080/hello"를 입력 후
우측 파란색 [Send] 버튼을 눌러보자.
하단의 [Response] 부 초록색 공간에 HTTP 상태 코드를 확인할 수 있으며,
하단부에 [HEADERS]의 정보를 볼 수 있고, 실제 응답 출력 부인 [BODY] 부를 확인할 수 있다.
'Backend > Spring' 카테고리의 다른 글
[스프링 부트 핵심 가이드] 06. 데이터베이스 연동 (0) | 2023.06.01 |
---|---|
[스프링 부트 핵심 가이드] 05. API를 작성하는 다양한 방법 (0) | 2023.05.25 |
[스프링 부트 핵심 가이드] 03. 개발 환경 구성 (0) | 2023.05.19 |
[스프링 부트 핵심 가이드] 02. 개발에 앞서 알면 좋은 기초 지식 (0) | 2023.05.18 |
[스프링 부트 핵심 가이드] 01. 스프링 부트란? (0) | 2023.05.17 |