목차
04. 스프링 부트 애플리케이션 개발하기
ㄴ4.1 프로젝트 생성
ㄴ4.1.1 인텔리제이 IDEA에서 프로젝트 생성하기
ㄴ4.1.2 스프링 공식 사이트에서 프로젝트 생성하기
ㄴ4.2 pom.xml(Project Object Model) 살펴보기
ㄴ4.2.1 빌드 관리 도구
ㄴ4.2.2 메이븐
ㄴ4.3 Hello World 출력하기
ㄴ4.3.1 컨트롤러 작성하기
ㄴ4.3.2 애플리케이션 실행하기
ㄴ4.3.3 웹 브라우저를 통한 동작 테스트
ㄴ4.3.4 Talend API Tester를 통한 동작 테스트
4.1 프로젝트 생성
스프링 부트 프로젝트를 만드는 방법은 크게 2가지가 있다.
1) 인텔리제이 IDEA에서 프로젝트를 생성하는 방법, 2) Spring Initializr를 이용해 생성하는 방법
1) 인텔리제이 IDEA에서 프로젝트를 생성하는 방법
앞에서 말했던 인텔리제이 IDEA 얼티밋 버전에서는 외부에서 프로젝트를 생성할 필요 없이 인텔리제이 IDEA에서 곧바로 스프링 프로젝트를 생성할 수 있다.
- 프로젝트 생성
책처럼 작업해도 되고 나는 보통 열려있는 인텔리제이 프로젝트에서 File > New > Projcet로 생성한다.
Server Url을 보면 start.spring.io(=Spring Initializr)라고 써있는데 이는 인텔리제이에 Spring Initailizr가 내장되어있는 것이다.
예전에는 Maven/ Gradle로 두개 뿐인 Type 이었지만 요새는 Gradle을 쓰는 것이 추세이며 Gradle-Groovy/-Kotlin으로 Gradle이 나누어져있다. 이것은 Gradle 스크립트(build.gradle)작성시 어떤 문법을 쓸 것인지를 선택하는 것이다. 보통 Groovy 문법이 간편하고 시작하기 편리하니 Groovy를 선택한다.
\
참고로 Gradle은 안드로이드 프로젝트의 표준 빌드 시스템이다.
Name : 프로젝트의 이름 설정
Location: 프로젝트를 생성할 위치 설정
Language : JVM 상에서 동작하는 언어를 선택, 'Java' 선택
Type : 빌드 툴을 선택, 요새는 Gradle이 추세
Group : 이 프로젝트를 정의하는 고유한 식별자 정보인 그룹을 설정. default는 example이며 책에서는 springboot로 진행.
Artifact : 세부 프로젝트를 식별하는 정보 기입, default는 demo, 책에서는 hello로 설정
Package name : Group, Artifact를 설정하면 자동으로 입력됨
JDK : Java Development Kit, 자바 개발 도구 선택. 자바 버전을 선택. 보통 LTS(Long-Term Support, 장기간 지원하는 버전)을 선택하며 인텔리제이에서는 보통 LTS만 보여준다. 책에서는 11 버전으로 설정. 같은 의미를 갖고 사용하는 것은 Projcect SDK(Software Development Kit)이다.
Java : 책에서는 11 버전으로 설정
Packaging : 애플리케이션을 쉽게 배포하고 동작하게 할 파일들의 패키징 옵션. 스프링이전에는 War로 말아서 톰캣 WAS에 파일을 넣곤했지만 스프링이 나온 이후 Jar로 쉽게 패키징 할 수 있다.
- 의존성 추가
프로젝트 구동시 필요한 라이브러리 의존성 추가하기
보통 Lombok(코드를 간결하게 해주는 마법사), Spring Web(REST API를 만든다면 필수)을 선택함
- 스프링 부트 버전 선택하기
SNAPSHOT > 새 기능 가지고 빠르게 나온 버전
M : Milestone > SNAPSHOT에서 조금 정리 되서 나온 버전
보통 SNAPSHOT, M 버전은 정리가 잘 안되어있고 LTS의 반대라고 생각하면 된다. 괄호 없는 버전을 선택.
책에서는 버전 2.5.6을 선택해야하나 보이지않을 때는 아무 버전(괄호 없는 버전)을 선택후 pom.xml 파일에서 버전 변경 가능. (Gradle에서는 build.gradle에서 버전 변경 가능)
2) Spring Initializr를 이용해 생성하는 방법
인텔리제이에서 한것과 비슷하다.
인터넷에 start.spring.io를 치면 아래와 같은 화면이 뜬다.
인텔리제이에서 선택한 것과 똑같이 선택하면 된다.
- 의존성 추가
Generate를 누르면 압축파일으로 다운로드가 된다.
원하는 폴더 경로에 압축 푼 다음 인텔리제이에서 프로젝트를 열어 시작하면 된다.
4.2 pom.xml(Project Object Model) 살펴보기
pom.xml은 앞전에 프로젝트 생성시에 Maven을 선택했을 때 메이븐의 기능을 사용하기 위해 작성하는 파일이다. 이런 xml 문법으로 스크립트를 작성해야한다.
(Gradle은 build.gradle)
빌드 관리 도구는 JVM이나 WAS가 프로젝트를 인식하고 실행할 수 있게 우리가 작성한 소스코드와 프로젝트에 사용된 파일들(.xml, .jar, .properties)을 빌드하는 도구이다.
개발 규모가 커질 수록 관리할 라이브러리가 많아지고 라이브러리 간 버전 호환성을 체크해야하는 어려움이 발생하는데, 빌드 관리 도구를 이용하면 이같은 문제를 해결 할 수 있다. 빌드 관리 도구는 크게 Maven / Gradle가 있다.
책에서는 Maven의 생명 주기 등을 설명하고 있다. 메이븐의 생명 주기 순서에 따라 프로젝트가 관리되고 동작된다고 한다.
Gradle의 이점이 Maven보다 많기 때문에 나는 Gradle로 프로젝트를 생성했고 실습을 진행할 예정이라 그래들의 생명주기를 써놓겠다.
Gradle의 이점>
1. 스크립트가 간결하다.(build.gradle에서 Groovy 문법)
2. Gradle은 캐싱을 사용하기 때문에 빌드 속도가 월등히 빠르다.
3. 멀티 프로젝트 빌드 기능이 존재
Gradle의 생명 주기
1. 초기화(Initialization)
Gradle은 하나 또는 멀티 프로젝트 빌드를 지원한다. 초기화 단계에서 Gradle은 빌드에 포함될 프로젝트를 결정하고 이러한 각 프로젝트에 대한 Project 인스턴스를 생성한다.
2. 구성(Configuration)
이 단계에서는 프로젝트 객체를 구성한다. 빌드에 포함된 모든 프로젝트의 빌드 스크립트가 실행된다.
3. 실행(Execution)
Gradle은 실행될 구성 단계에서 생성 및 구성된 task의 서브셋을 결정한다. 서브셋은 task gradle command와 현재 디렉터리에 전달된 이름 인수에 의해 결정된다. 그 후 Gradle이 선택한 각 task를 실행한다.
출처 > https://somuchthings.tistory.com/219
4.3 Hello World 출력하기
스프링은 MVC 패턴을 사용하지만 여기선 간단하게 Hello World를 출력하기 위해서 Controller만 작성한 후 실행해보겠다.
- Controller 작성하기
package com.springboot.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";
}
}
- 어플리케이션 실행하기
실행하면 console 창에서 실행 로그가 출력되는데 3번째 줄인
2023-08-30 09:12:29.969 INFO 21916 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
을 확인하면 8080포트가 열린것을 확인할 수 있다.
default로 8080포트이고 이것은 properties파일을 생성해 포트 번호를 변경할 수 있다.
- 웹 브라우저를 통한 동작 테스트
웹 브라우저에 기본 url (localhost:포트번호)에+ controller에 적은 /hello가 연결된 url을 쳤을 때 Hello World가 잘 출력된 것을 확인할 수 있다.
- 또 다른 동작 테스트
책에서는 Talend API Tester를 통한 동작 테스트를 확인할 수 있다고 알려주는데 이것은 크롬 브라우저의 확장 프로그램이다.
그러나 이것은 Postman으로 대체 가능하고 인텔리제이에서도 test> hello.http로 가능하다.
'BookStudy > 스프링 부트 핵심 가이드' 카테고리의 다른 글
[스프링 부트 핵심가이드] 06. 데이터베이스 연동 (0) | 2023.09.08 |
---|---|
[스프링 부트 핵심 가이드] 05. API를 작성하는 다양한 방법 (0) | 2023.08.31 |
[스프링 부트 핵심 가이드] 03. 개발 환경 구성 (0) | 2023.08.24 |
[스프링 부트 핵심 가이드] 02. 개발에 앞서 알면 좋은 기초 지식 (0) | 2023.08.24 |
[스프링 부트 핵심 가이드] 01. 스프링 부트란? (0) | 2023.08.24 |