스프링 부트 - #1 소개

2020. 11. 17. 13:13개발&TIL/스프링

스프링 부트 소개

스프링의 개발 환경 설정의 어려움을 보완하고자 진행한 프로젝트
환경 설정을 최소화 하고 비즈니스 로직에 집중하도록 도와 생산성을 크게 향상

스프링 부트 특징

  • 임베디드 톰캣, 제티, 언더토우를 사용하여 독립 실행 가능 스프링 애플리케이션 개발
  • 통합 스타터를 제공하여 메이븐/그레이들 구성 간소화
  • 스타터를 통한 자동화된 스프링 설정 제공
  • 번거로운 XML 설정 X
  • JAR을 사용하여 자바 옵션만으로 배포 가능
  • 애플리케이션의 모니터링과 관리를 위한 스피링 액츄에이터(Spring Actuator) 제공

스프링 부트는 스프링 프레임워크에 속하는 도구중 하나

스프링 부트 스타터 들여다보기

스프링 부트 스타터를 이용하면 간편하게 설정가능

스타터는 '특정 목적을 달성하기 위한 의존성 그룹' 으로 이해하면

DB 연동에 스프링과 JPA가 필요하면 build.gradle에 spring-boot-starter-data-jpa만 추가하면 됨

스타터 명명규칙 알아보기

spring-boot-starter-*
  • *에 해당하는 스타터명을 명시
  • 예를 들어 웹 관련 프로젝트 진행시에 'spring-boot-starter-web'

스타터 내부의 의존성 확인 방법

spring bot Reference Guide 참고

인텔리제이 IDEA에서 프로젝트 왼쪽하단 'External Libraries' 에서 확인 가능

spring-boot-starter는 여섯가지 의존성을 제공

  1. spring-boot : 스프링 부트에서 기본 제공하는 의존성
  2. spring-boot-autoconfigure : 스프링 부트의 자동 환경 구성에 필요한 의존성
  3. spring-boot-starter-logging : 각종 로그를 사용하는데 필요한 의존성
  4. javax.annotation-api : 소프트웨어의 결함을 탑지하는 어노테이션을 지원하는 의존성
  5. spring-core : 스프링 코어를 사용하는데 필요한 의존성
  6. snakeyaml : yaml을 사용하는데 필요한 의존성

스프링 부트 버전에 따라 무엇이 다른지

아래 github에서 위키 페이지 참조

https://github.com/spring-projects/spring-boot

학습할 스타터

Web, Security, OAuth2, JPA, REST, Batch 스타터

스타터명 설명
spring-boot-starter 스프링 부트의 코어, auto-configuration, logging, yaml 제공
spring-boot-starter-aop 관점 지향 프로그램밍(AOP)을 위한 스타터
spring-boot-starter-batch 스프링 배치
spring-boot-starter-data-jpa 스프링 데이터 JPA
spring-boot-starter-data-redis 레디스 설정 자동화 스타터
spring-boot-starter-data-rest REST API 사용하는 스타터
spring-boot-starter-thymeleaf 타임리프 템플릿 엔진 스타터
spring-boot-starter-jdbc 톰캣 JDBC 커넥션풀 스타터
spring-boot-starter-secrity 스프링 시큐리티 스타터
spring-boot-starter-oauth2 OAuth2 인증에 사용하는 스타터
spring-boot-starter-validation 자바 빈 검증에 사용하는 스타터
spring-boot-starter-web 웹용 스타터 (스프링 MVC, REST형, 임베디드 톰캣 등)

스프링 부트 장단점

  • 장점

    • 각각의 의존성 버전 올리기에 수월
    • 간단한 어노테이션 설정이나 프로퍼티 설정으로 적용
    • 별도의 외장 톰캣 설치 필요 X
  • 단점

    • 설정을 개인화 하면 버전을 올릴때 불편
    • 특정 설정을 개인화 혹은 설정 자체를 변경하려면 내부 코드를 살펴야하는 불편함
728x90

'개발&TIL > 스프링' 카테고리의 다른 글

스프링부트 - #5 oAuth2  (0) 2020.11.17
스프링부트 - #4 web  (0) 2020.11.17
스프링부트 - #3 테스트  (0) 2020.11.17
스프링부트 - #2 환경설정  (0) 2020.11.17
Spring Tests에서 스케쥴링 제외하기  (0) 2020.11.10