스프링 부트 앱은 CLI, 메이븐, 그레이들, 앤트 등으로 생성한다.
2.1 스프링 부트 CLI 설치
- 자바 1.6+ 설치
- 환경 변수 JAVA_HOME을 자바 SDK 설치 경로로 설정
- SPRING_HOME 변수는 스프링 부트의 바이너리 배포 파일을 압축 해제한 경로로 설정
- PATH 변수에 %SPRING_HOME%\bin 추가
Spring init
스프링 부트 프로젝트의 뼈대를 생성하는 명령어
$ Spring init myapp |
https://start.spring.io의 의 웹 서비스를 호출해서 myapp이라는 이름의 폴더를 만들고 maven 프로젝트(디폴트)를 생성한다.
$ Spring init --build gradle myapp |
https://start.spring.io의 의 웹 서비스를 호출해서 myapp이라는 이름의 폴더를 만들고 gradle 프로젝트를 생성한다.
$ Spring init -dweb, data-jpa, h2, thymeleaf --build maven myapp --force |
스프링 부트 메이븐 프로젝트를 만든 다음 폼 파일(pom.xml)에 정의한 웹 애플리케이션에 필요한 의존체를 알아서 추가한다. 웹 요청을 처리할 라이브러리(내장 톰캣 서버), 퍼시스턴스(data-jpa), H2 DB 엔진(h2), 뷰어 엔진(thymelear)을 자동으로 엮어준다.
--force : myapp 폴더를 덮어쓰거나 이름을 변경할 수 있다.
2.2 메이븐과 그레이들로 빌드하기
메이븐과 그레이들은 컴파일, 테스트, 빌드 작업에 쓰는 도구이다.
메이븐 (https://maven.apache.org/)
그레이들 (http://gradle.org/)
2.2.1 메이븐 (Maven)
메이븐으로 스프링 부트 앱을 개발할 때는 폼 파일이 필수이다.
pom.xml
<!-- 스프링 부트 상위 의존체 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.3.RELEASE</version> </parent> |
반드시 필요한 상위 폼
spring-boot-starter-parent : 스프링 부트 시동에 꼭 필요한 스프링 프레임워크(spring-core), 스프링 테스트 등 앱 실행에 필요한 라이브러리가 모두 담겨있다.
<!-- 의존체 추가: 스타터 폼 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> |
스프링 부트 기능에 해당하는 의존체
spring-boot-starter : 기본 스타터 폼으로 앱에 필요한 의존체를 전부 알아서 가져온다.
<!-- 의존체 추가: 스타터 폼 --> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> . . . </dependencies> |
스프링 부트 기능에 해당하는 의존체
spring-boot-starter-web : 웹 애플리케이션 프로젝트의 기본 스타터 폼으로 spring-core, spring-web, spring-webmvc, 내장 톰캣 서버, 그 밖의 웹 관련 라이브러리를 전부 알아서 가져온다.
<!-- JAR/WAR 파일로 묶기 위한 스프링 부트 플러그인> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> |
spring-boot-maven-plugin : mvn package 명령어로 전체 앱을 JAR 또는 WAR 파일로 묶을 수 있게 한다.
2.2.2 그레이들(Gradle)
build.gradle
buildscript{ repositories{ jcenter( ) maven { url "http://repo.spring.io/snapshot" } maven { url "http://repo.spring.io/milestone" } } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.3.RELEASE") } } |
spring-boot-gradle-plugin
dependencies{ // 스타터 폼 의존체 compile('org.springframework.boot:spring-boot-starter') } |
spring-boot-starter
2.3 외부 도구 사용하기
2.3.1 스프링 이니셜라이저 (Spring Initializr)
2.3.3 스프링 도구 모음(STS, Spring Tool Suite)
이클립스 IDE를 사용한다면, STS 플러그인을 설치하거나 위에서 다운받아 사용하면 된다.
STS는 스프링 부트를 기본 지원한다.
File > New > Spring Starter Project
2.4 처음 만드는 스프링 부트 앱
2.4.1 스프링 부트 일기 (Spring Boot Journal)
개발자가 매일 자신이 한 일을 짤막하게 기록하는 간단한 일기 응용 프로그램
2021.08.10 - [BOOK REVIEW/실전 스프링 부트 워크북] - [실전 스프링 부트 워크북] 스프링 부트 일기 / 스프링 부트 프로젝트 따라하기
2.4.2 스프링 부트 작동 원리
메인 클래스에 붙였던 애너테이션 @SpringBootApplication 을 살펴보자.
@SpringBootApplication의 정체는 @Configuration, @EnableAutoConfiguration, @ComponentScan 애너테이션이 뭉쳐진 애너테이션이다.
스프링 부트는 @SpringBootApplication과 그 내부의 자동 구성(@EnableAutoConfiguration) 기능 덕분에 전체 애플리케이션 컴포넌트를 식별한다.
스프링 부트는 클래스패스, 애너테이션, 구성 파일을 보고 가장 적절한 앱에 가장 알맞은 기술을 넣어 구성을 마친다.
우선, 클래스패스를 조사해서 spring-boot-starter-web 스타터가 선언된 것을 인지한 스프링 부트는 웹 애플리케이션을 구성한다. 따라서 @RequestMapping이 달린 메서드가 있고 @Controller 애너테이션이 달린 클래스는 웹 컨트롤러로 보고, 톰캣 서버는 spring-boot-starter-web의 의존체 중 하나이므로 톰캣으로 앱을 띄운다.
스프링 부트로 웹 애플리케이션을 생성할 때마다 톰캣 서버는 반드시 내장된다. 물론, 톰캣 대신 다른 서버를 대신 사용할 수 있다.
'BOOK REVIEW > 실전 스프링 부트 워크북' 카테고리의 다른 글
[실전 스프링 부트 워크북] CH5. 스프링과 스프링 부트 (0) | 2021.08.15 |
---|---|
[실전 스프링 부트 워크북] 스프링부트 애플리케이션 구성 알아보기 / 스프링 부트 프로젝트 따라하기 (0) | 2021.08.14 |
[실전 스프링 부트 워크북] CH3 스프링 부트 자동 구성과 주요 기능 (0) | 2021.08.13 |
[실전 스프링 부트 워크북] 스프링 부트 일기 / 스프링 부트 프로젝트 따라하기 (0) | 2021.08.10 |
[실전 스프링 부트 워크북] CH1 스프링 부트 들어가기 (0) | 2021.08.10 |