스프링부트 소개
0. 스프링부트SpringBoot란?
Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run". We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.
- 스프링부트는 단독실행되는, 실행하기만 하면 되는 상용화 가능한 수준의 스프링 기반 애플리케이션을, 쉽게 만들어낼 수 있다.
- 최소한의 설정으로 스프링 플랫폼과 서드파티 라이브러리들을 사용할 수 있도록 하고 있다.
스프링 기반의 애플리케이션을 개발하기 쉽도록 기본설정되어 있는 설정을 기반으로 해서 빠르게 개발할 수 있도록 해주는 개발플랫폼이랄까?
0.1. 스프링부트 기능
Create stand-alone Spring applications
단독실행가능한 스프링애플리케이션을 생성한다.,
Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)
내장형 톰캣, 제티 혹은 언더토우를 내장(
WAR
파일로 배포할 경우에는 필요없음)Provide opinionated 'starter' component to simplify your build configuration
기본설정되어 있는 'starter' 컴포넌트들을 쉽게 추가
Automatically configure Spring whenever possible
가능한 자동설정되어 있음
Provide production-ready features such as metrics, health checks and externalized configuration
상용화에 필요한 통계, 상태 점검 및 외부설정을 제공
Absolutely no code generation and no requirement for XML configuration
설정을 위한 XML 코드를 생성하거나 요구하지 않음
1. 스프링부트 시작하기
1.1. 스프링부트 프로젝트 생성하기
주의사항
네트워크가 연결되어 있어야 한다.
그렇다면, 네트워크가 연결되지 않은 인트라넷 환경에서는 어떻게 해야할까? = 넥서스Nexus 에 스프링부트 설정을 해야겠지요? 사실, 안해봐서 모르겠음. @_@);;
Maven 혹은 Gradle 플러그인이 IDE에 설치되어 있어야 한다.
1.1.1. http://start.spring.io/ 에서 생성하기
1.1.1.1. 프로젝트 메타데이터를 등록
- Maven 보다는 Gradle
- Maven 예제가 많은 편이지만, Maven의 골, 페이즈만으로는 프로젝트의 필요한 기능을 모두 지원하지 못할 수도 있음
- Gradle은 Groovy DSL로 구성되어 있어서 그루비를 익혀야하지만, 지원되는 기능을 익히고 나면 훨씬 강력해짐
- 배포형태에 따라서 war 또는 jar
- 기본적으로는 단독실행가능지만, 프로젝트 환경에 따라 배포할 수도 있으니 war도 가능
1.1.1.2. [Generate Project] 버튼클릭
- 'artifact' 이름으로 된 zip 파일 다운로드
1.1.1.3. IDE에서 Import Project
1.1.2. STS에서 생성하기
1.1.2.1. [File]-[New]-[Spring Starter project]
선택
1.1.2.2. 사용하려는 스프링 starter 선택
- 최초에는 필요한 라이브러리들을 다운로드 받는데 상단한 시간이 소요된다.
1.2. 스프링부트 프로젝트 실행
[Run as]
-[Spring Boot App]
선택[gradle] - [Tasks quick launcher]
을 이용해서 실행- 프로젝트 지정된 JDK 버전과 IDE 실행 JDK 버전이 다르면...
- 프로젝트 생성 위치에서
$ gradle bootRun
명령 실행
2. 스프링부트 구성 살펴보기
2.1. 최초 생성된 스프링부트 프로젝트 살펴보기
2.1.1. jar 프로젝트
build.gradle
{artifact-name}Application.java
- IDE에서 Java Application project로 인식
build
태스크 실행시demo.jar
생성- 실행
2.1.2. war 프로젝트
build.gradle
public class ServletInitializer extends SpringBootServletInitializer
클래스가 있음- IDE에서 웹프로젝트로 인식
build
태스크 실행시demowar.war
생성- 실행
2.1.3. Excutable JAR
- 자세히 알고 싶다면 http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#executable-jar 를 보고 알려주세요...!
2.2. @SpringBootApplication
- 코드
@SpringBootApplication
애노테이션이 선언된 애플리케이션 클래스는 패키지 루트에 위치하는 것이 좋다.- 물론
@ComponentScan
에 별도의 패키지를 지정할 수 있지만 굳이~ 그렇게 하지 맙시다. - Locating the main application class 의 기본적인 구조를 따르는 걸 권장하고 싶음
- 물론
3. 스프링부트 설정
3.1. 스프링부트 자동설정AutoConfig
3.1.1. autoconfigure 패키지 확인
3.1.2. @Conditional, @ConditionalOnBean, @ConditionalOnMissingBean, @ConditionalOnClass
조건에 따라 스프링 빈Bean 으로 등록
@ConditionalOnBean
@ConditionalOnMissingBean
@ConditionalOnClass
3.2. 외부설정 하기
- Common Application properties
- 스프링부트의 프로퍼티스 확인순서에 따라서 외부요인들을 읽어오게 됨
- Environment
3.2.1.
application.properties
- PropertySource
3.2.2.
application.yml
- YamlPropertySourceLoader
3.2.3. 프로파일즈 활용하기
- 로컬, 개발, 테스트, 운영 설정을 각각 관리 및 적용
- Profiles - springframework
- 환경별 설정요소를 한곳에서 집중하여 관리할 수 있음
3.2.3.1. 기존 방식
- 설정디렉토리를 분리
- config/local
- config/development
- config/test
- config/production
- 빌드시 프로파일을 지정하여 지정한 설정디렉토리의 설정파일을 적용하는 형식을 취함
3.2.3.2. application.properties
- application-{profiles}.properties
- application-local.properties
- application-development.properties
- application-test.properties
- application-production.properties
3.2.3.3. application.yaml
- application.yaml
4. 스프링부트 확장하기
4.1. starter POMs 추가하기
- Starer POMs
- 추가시 spring.provides 에 연관된 스프링 라이브러리들이 정의되어 있다.
- 관련 의존성 라이브러리에 대해서는 starter 프로젝트 내부에 있는 pom.xml 에 정의되어 있음
4.2. 의존성 라이브러리 추가하기
4.2.1. 의존성 버전
- dependency-versions
- 목록에 있는 의존성 라이브러리들은 버전을 정의하지 않으면, 기본지정된 버전이 적용됨
- 별도의 버전을 지정할 수 있음
4.2.2. 의존성 라이브러리 검색
- http://search.maven.org/
- http://mvnrepository.com/
● 개인적 목표
- JDK 8 이상 사용
- Gradle 사용
- SpringBoot 적용
- 스프링 프레임워크 4.0 이상 적용
- Spring Data JPA 사용
'Java > SpringBoot' 카테고리의 다른 글
[SpringBoot] 스프링부트 참고문서(1.2.0.BUILD-SNAPSHOT) (아직도)번역중 (0) | 2015.09.10 |
---|---|
[SpringBoot] Remote Shell 기능소개 (0) | 2015.08.28 |
[SpringBoot] - @ConfigurationProperties in STS (0) | 2015.07.14 |
SpringBoot: h2database에 접근할 수 있는 h2console 을 애플리케이션과 함께 사용하기 (0) | 2015.05.20 |
SpringBoot(v1.2.3): FlywayDB 관련 설정 오류(레퍼런스 가이드와 다름) (0) | 2015.04.22 |