본문 바로가기

좋아하는 것_매직IT/1.spring

20.Spring, 스프링 부트(Spring Boot)에 대해서 알아보자.

반응형

스프링부트(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

그럼, 스프링 부트 프로젝트를 직접 만들어보자.

  • 우선, 저는 주로 사용하는 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" 는 이것에 대하여 생각해 보는 것이라는 의미

  • 오늘의 민법 한마디(for real estate)
    • 제1편 총칙 / 제5장 법률행위/ 제3절대리
      • 제131조(상대방의 최고권)
        • 대리권없는 자가 타인의 대리인으로 계약을 한 경우에 상대방은 상당한 기간을 정하여 보인에게 그 추인여부의 확답을 최고할 수 있다.
        • 본인이 그 기간내에 확답을 발하지 아니한 때에는 추인을 거절한 것으로 본다.

  • 나의 목표 및 다짐을 항상 내곁에 두기.(계속 36)
    • 목표
      • 나의 강점을 바탕으로 나의 일을 잘해냄으로써 타인과 사회를 아릅답게 만든다.
        • 현재 내가 가진 능력으로 누군가에 도움이 될 수 있을까? 에 대해서 항상 생각하기
    • 목표를 이루기 위한 실천방안
      • 꾸준한 블로깅/기록법/독서법으로 넘버원이 아닌 온리원이 되보자.
      • 천사불여일행(千思不如一行)을 항상생각하며 체화 및 각인시키자.
        • "천번 생각하는것보다 한번 행동하는 것이 더 중요하다."
      • 기기일약 불능십보(騏驥一躍 不能十步) / 노마십가 공재불사(駑馬十駕 功在不舍)
        • 천리마도 한번에 열걸음을 뛸 수 없고, 느리고 둔한말이라도 열흘이면 하룻길을 간다.
300x250