스프링부트(Spring Boot) 에 대해서 알아보자.
- 스프링부트란?
- "바로 실행"할 수 있는 stand-alone, production 급의 스프링기반 어플리케이션을 쉽게 만들 수 있는 프로젝트라고 설명하면 될까?
- 아무튼 spring 홈페이지에서는 아래와 같이 설명하고 있다.
- Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run".
- 참고 URL
그럼, 기존에도 스프링 프레임워크가 있었는데, 왜 스프링 부트가 나타났을까?
- 우선, 스프링 프레임워크를 통해서 프로젝트 구축 방법을 알아보자.
- 예시) 스프링 MVC 로 서비스를 만들고, JPA(구현은 hibernate)를 사용해 데이터베이스를 연결하는 프로젝트
- 그럼 차근차근 구상해보자.
- 첫번째, 사용할 스프링MVC, JPA, 그리고 hibernate의 버전을 결정해야함.
- 두번째, 모든 다른 Layer 를 연결하는 스프링 콘텍스트를 설정해야함.
- 세번째, 스프링 MVC로 Web Layer 를 설정해야함.
- DispatcherServlet
- 핸들러 리졸버
- 뷰 리졸버 등등 에 대한 Bean 구성
- 네번째, Data Layer에서 hibernate를 설정해야함.
- SessionFactory, Data Source 등에 대한 Bean 구성
- 다섯번째, 서로 다른 환경에 따라 어플리케이션 구성을 저장하는 방법을 결정하고 구현해야함.
- 여섯번째, 단위 테스트를 어떻게 할 것인지 결정해야함.
- 일곱번째, 트랜잭션 전략을 결정하고 구현해야함.
- 여덟번째, 보안을 구현하는 방법을 결정하고 구현해야함.
- 아홉번째, 로깅 프레임워크를 설정해야함.
- 열번째, 프로덕션 환경에서 어플리케이션을 모니터링할 방법을 결정하고 구현해야함.
- 열한번째, 어플리케이션에 대한 통계제공을 위해 매트릭스 관리 시스템을 결정하고 구현해야함.
- 마지막, 어플리케이션 Web or 어플리케이션 서버에 배포하는 방법을 결정하고 구현해야함.
- 즉, 위의 단계처럼, 복잡한 과정을 통해서 많은 시간이 소요될 수 있음.
- 정리하자면, 바로 스프링부트가 탄생한 배경은 위의 복잡성을 해결하고자 탄생함.
그럼, 스프링 부트의 특징을 알아보자.
- 스프링 부트의 특징
- 스프링기반 프로젝트를 신속하게 구축할 수 있음.
- 다양한 프레임워크, 서버 및 스펙의 버전 관리 및 설정에 대한 기본처리를 제공함.
- 어플리케이션 보안을 위한 기본 옵션을 제공함.
- 확장 가능성이 있는 기본 어플리케이션 매트릭스를 제공함.
- 상태 확인을 사용한 기본 어플리케이션 모니터링을 제공함.
- Embed Tomcat 를 제공함.
- 기타 등등
- 아래는 스프링 부트 홈페이지에서 설명하고 있는 특징이다. 한번 읽어보면 좋을듯 ^^
- Features
-
Create stand-alone Spring applications
-
Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)
-
Provide opinionated 'starter' dependencies to simplify your build configuration
-
Automatically configure Spring and 3rd party libraries whenever possible
-
Provide production-ready features such as metrics, health checks, and externalized configuration
-
Absolutely no code generation and no requirement for XML configuration
-
- Features
그럼, 스프링 부트 프로젝트를 직접 만들어보자.
-
우선, 저는 주로 사용하는 VSCode 를 통해서 프로젝트를 만들어 보려고 한다.
-
사전작업인,
-
패키지 설치, java home 세팅 등등의 과정은 생략하고 바로 프로젝트를 만드는 방법을 실습해보려고 한다.
-
-
-
첫번째, 단축키를 누르고 VSCode 의 커맨드 팔레트에서 "spring init maven"을 입력한다.
-
커맨드 팔레트 소환을 위한 단축키)
-
Ctrl + Shift + p
-
-
- 두번째, 프로젝트 언어로 "Java" 을 선택한다.
- 세번째, Group Id 로 "com.example.thub" 를 입력한다.
- 네번째, Artifact id 로 "demo" 를 입력한다.
- 다섯번째, 스프링 부트 버전으로 현재 버전인 "2.2.6"을 선택한다.
- 여섯번째, dependencies 로 "Spring Boot DevTools" 와 "Spring Web" 을 선택한다.
- 일곱번째, 아래와 같이 프로젝트가 생성됨을 확인할 수 있음.
- 그리고 아래와 같이 프로젝트가 실행됨을 확인할 수 있음
-
실행방법1) 터미널창에 아래 커맨드를 입력
-
$ .\mvnw spring-boot:run
-
-
실행방법2) VSCode 의 Spring-Boot Dashboard 에서 Start 를 클릭
-
실행방법3) VSCode 에서 Run을 클릭
-
-
-
웹브라우저로 "localhost:8080" 으로 접속도 해봄,
-
but, 아직은 컨트롤러를 구현하지 않았기 때문에 에러페이지가 뜸
-
결론
- 스프링부트란, "바로 실행"할 수 있는 stand-alone, production 급의 스프링기반 어플리케이션을 쉽게 만들 수 있는 프로젝트를 말함.
- 스프링 부트의 주요 특징은 아래와 같음.
- 스프링기반 프로젝트를 신속하게 구축할 수 있음.
- 다양한 프레임워크, 서버 및 스펙의 버전 관리 및 설정에 대한 기본처리를 제공함.
- 어플리케이션 보안을 위한 기본 옵션을 제공함.
- 확장 가능성이 있는 기본 어플리케이션 매트릭스를 제공함.
- 상태 확인을 사용한 기본 어플리케이션 모니터링을 제공함.
- Embed Tomcat 를 제공함.
- 오늘도 스프링 부트 관련 지식 및 실습에 대한 마술(?) 한가지 획득완료! 감사합니다. ^^
- 오늘의 명언 한마디
- 도전은 언제 시작하고, 기다려야 하는지를 아는 능력을 완성하는데 있지 않다.
- 그보다는 시작하는 습관을 들이는데 있다.
- 당신의 마지막 시도는 언제 였는가? 지금시작하지 않으면, 누군가가 시작해 버릴 것이다.
- 떠오르는 순간 바로 시작하라. 서둘러라!
- 세스고딘지음, "세스 고딘의 시작하는 습관" 중에서..
- 오늘의 영어 한마디
- I need to think about this.
- 나는 필요해 / 생각해보는 것이 / 이것에 대해
- 해설
- "need" 는 ~을 필요하다라는 동사임
- "to think about this" 는 이것에 대하여 생각해 보는 것이라는 의미
- I need to think about this.
- 오늘의 민법 한마디(for real estate)
- 제1편 총칙 / 제5장 법률행위/ 제3절대리
- 제131조(상대방의 최고권)
- 대리권없는 자가 타인의 대리인으로 계약을 한 경우에 상대방은 상당한 기간을 정하여 보인에게 그 추인여부의 확답을 최고할 수 있다.
- 본인이 그 기간내에 확답을 발하지 아니한 때에는 추인을 거절한 것으로 본다.
- 제131조(상대방의 최고권)
- 제1편 총칙 / 제5장 법률행위/ 제3절대리
- 나의 목표 및 다짐을 항상 내곁에 두기.(계속 36)
- 목표
- 나의 강점을 바탕으로 나의 일을 잘해냄으로써 타인과 사회를 아릅답게 만든다.
- 현재 내가 가진 능력으로 누군가에 도움이 될 수 있을까? 에 대해서 항상 생각하기
- 나의 강점을 바탕으로 나의 일을 잘해냄으로써 타인과 사회를 아릅답게 만든다.
- 목표를 이루기 위한 실천방안
- 꾸준한 블로깅/기록법/독서법으로 넘버원이 아닌 온리원이 되보자.
- 천사불여일행(千思不如一行)을 항상생각하며 체화 및 각인시키자.
- "천번 생각하는것보다 한번 행동하는 것이 더 중요하다."
- 기기일약 불능십보(騏驥一躍 不能十步) / 노마십가 공재불사(駑馬十駕 功在不舍)
- 천리마도 한번에 열걸음을 뛸 수 없고, 느리고 둔한말이라도 열흘이면 하룻길을 간다.
- 목표
'좋아하는 것_매직IT > 1.spring' 카테고리의 다른 글
22.Spring, Spring Boot App 시작하기 (필요한 starter project 로 pom.xml 파일을 구성, 2/4) (0) | 2021.02.06 |
---|---|
21.Spring, Spring Boot App 시작하기 (spring-boot-starter-parent 구성, 1/4) (0) | 2021.01.27 |
19.Spring, 12팩터앱(The Twelve-Factor App)에 대해서 알아보자. (0) | 2021.01.27 |
18.Spring, 스프링 데이터 JPA(Java Persistence API)에 대해서 알아 볼께요. (0) | 2021.01.15 |
17.Spring, 스프링관련 자바 웹어플리케이션 레이어(Layer) 및 전반적인 구성 요소에 대해서 알아보자. (0) | 2021.01.04 |