스프링 부트 앱은 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)
Spring Tools 4 is the next generation of Spring tooling
Largely rebuilt from scratch, Spring Tools 4 provides world-class support for developing Spring-based enterprise applications, whether you prefer Eclipse, Visual Studio Code, or Theia IDE.
spring.io
이클립스 IDE를 사용한다면, STS 플러그인을 설치하거나 위에서 다운받아 사용하면 된다.
STS는 스프링 부트를 기본 지원한다.
File > New > Spring Starter Project
2.4 처음 만드는 스프링 부트 앱
2.4.1 스프링 부트 일기 (Spring Boot Journal)
개발자가 매일 자신이 한 일을 짤막하게 기록하는 간단한 일기 응용 프로그램
2021.08.10 - [BOOK REVIEW/실전 스프링 부트 워크북] - [실전 스프링 부트 워크북] 스프링 부트 일기 / 스프링 부트 프로젝트 따라하기
[실전 스프링 부트 워크북] 스프링 부트 일기 / 스프링 부트 프로젝트 따라하기
스프링 부트 일기 (Spring Boot Journal) 개발자가 매일 자신이 한 일을 짤막하게 기록하는 간단한 일기 응용 프로그램 [프로젝트] STS에서 스프링 부트 일기 앱을 만들어보자. 1. Spring Starter Project File >.
devmath.tistory.com
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 |