스프링 부트 핵심 가이드 4장 [스프링 부트 애플리케이션 개발하기]
4장 스프링 부트 애플리케이션 개발하기
4.1 프로젝트 생성
4.1.1 인텔리제이 IDEA에서 프로젝트 생성하기
IntelliJ IDEA Ultimate 버전에 내장된 Spring Initializr를 사용하여 외부에서 프로젝트를 생성할 필요 없이 곧바로 스프링 프로젝트를 생성할 수 있습니다.
- Name : 프로젝트의 이름을 설정합니다.
- Location : 프로젝트 생성할 위치를 지정합니다.
- Laguage : JVM 상에서 동작하는 언어를 선택합니다 (java)
- Group : 이 프로젝트를 정의하는 고유한 식별자 정보인 그룹을 설정합니다.
- Type : 빌드 툴을 선택합니다. 과거엔 Maven을 많이 사용했으나 요즘은 비교적 최신인 Gradle을 많이 이용합니다.
- Artifact : 세부 프로젝트를 식별하는 정보를 기입합니다. 프로젝트 명과 동일하게 작성해도 무관합니다.
- Package name: 그룹과 Artifact를 설정하면 자동으로 입력됩니다.
- Project SDK : JDK 버전을 설정합니다.
- Java : 자바 언어 버전을 설정합니다.
- Packaging : 애플리케이션을 쉽게 배포하고 동작하게 할 파일들의 패키징 옵션입니다.
- Jar / War : 자바 언어의 툴에서 사용하는 아카이브 파일. (애플리케이션의 배포와 동작을 위해 사용)
4.1.2 스프링 공식 사이트에서 프로젝트 생성하기 (spring initializar)
의존성 추가 후 'GENERATE'로 다운로드 후 압축을 풀고 인텔리제이 IDEA로 실행.
4.2 pom.xml(Project Object Model) 살펴보기
Maven의 핵심 부분인 pom.xml(Project Object Model) 파일은 Maven 프로젝트의 기본 설정 파일로서, 이 파일에는 프로젝트 구성, 의존성, 플러그인, 목표 빌드 프로파일 등의 프로젝트와 관련된 모든 정보가 포함된다.
4.2.1 빌드 관리 도구
JVM이나 WAS가 프로젝트를 인식하고 실행할 수 있게 우리가 작성한 소스코드와 프로젝트에 사용된 파일들(.xml, .jar, .properties)을 빌드하는 도구이다.
개발 규모가 커질수록 관리 할 라이브러리가 많아지고 라이브러리 간 버전 호환성을 체크해야 하는 어려움이 발생하는데, 빌드 관리 도구를 이용하면 이 같은 문제를 해결할 수 있다.
4.2.2 메이븐 (Maven)
아파치 메이븐은 자바 기반 프로젝트를 빌드하고 관리하는데 사용하는 도구로 메이븐의 가장 큰 특징은 pom.xml 파일에 필요한 라이브러리를 추가하면 해당 라이브러리에 필요한 라이브러리까지 함꼐 내려받아 관리한다는 점이다.
- 프로젝트 관리 : 프로젝트 버전과 아티팩트 관리.
- 빌드 및 패키징 : 의존성 관리, 설정된 패키지 형식으로 빌드 수행.
- 테스트 : 빌드를 수행하기 전에 단위 테스트를 통해 작성된 애플리케이션 코드의 정상 동작 여부 확인.
- 배포 : 빌드가 완료된 패키지를 원격 저장소에 배포.
4.2.2.1 메이븐의 생명주기
- 클린 생명주기
clean : 이전 빌드가 생성한 모든 파일을 제거합니다. - 기본 생명주기
validate : 프로젝트를 빌드하는 데 필요한 모든 정보를 사용할 수 있는지 검토한다.
compile : 프로젝트의 소스코드를 컴파일한다.
test : 단위 테스트 프레임워크를 사용해 테스트를 실행한다.
package : 컴파일한 코드를 가져와서 JAR 등의 형식으로 패키징을 수행한다.
verify : 패키지가 유효하며 일정 기준을 충족하는지 확인한다.
install : 프로젝트를 사용하는 데 필요한 패키지를 로컬 저장소에 설치한다.
deploy : 프로젝트를 통합 또는 릴리스 환경에서 다른 곳에 공유하기 위해 원격 저장소에 패키지를 복사한다. - 사이트 생명주기
site : 메이븐의 설정 파일 정보를 기반으로 프로젝트의 문서 사이트를 생성한다.
site-deploy : 생성된 사이트 문서를 웹 서버에 배포한다.
각 생명주기 단계는 이전 단계가 성공적으로 완료된 후에 실행됩니다.
4.3 Hello World 출력하기
4.3.1 컨트롤러 작성하기
스프링 MVC(Model-View-Controller)의 컨트롤러는 사용자 요청 처리에 있어 핵심 역할을 수행하며,
MVC 패턴에서 "Controller" 부분을 차지한다.
- 컨트롤러 코드 작성
package com.example.hello.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "Hello World";
}
}
컨트롤러에서 수행되는 주요 작업
- 사용자의 요청을 받음.
- 요청에 맞는 모델(Model)의 메서드나 기능을 호출.
- 모델의 반환 값을 처리하여 사용자에게 표시할 결과를 생성.
- 결과를 뷰에 전달하여 사용자에게 웹 페이지를 표시.
4.3.2 애플리케이션 실행하기
4.3.3 웹 브라우저를 통한 동작 테스트
'Tomcat started on port(s): 8080 (http) with context path' 을 통해
'http://localhost:8080/hello'에 실행 됬다는 것 확인 가능하다.
4.3.4 Talend API Tester를 통한 동작 테스트
웹 브라우저를 통한 동작 테스트는 간편하지만 상세한 응답을 확인할 수 없다는 단점이 있기에
Talend API Tester 크롬 확장프로그램 또는 포스트맨 등의 프로그램을 사용합니다.