<청춘> 격정적으로 사는 것

밤을 새고 공부한 다음 날 새벽에 느꼈던 생생한 환희와 야생적인 즐거움을 잊을 수 없다

BOOK REVIEW/실전 스프링 부트 워크북

[실전 스프링 부트 워크북] CH1 스프링 부트 들어가기

수학도 2021. 8. 10. 15:49

스프링 프레임워크

  • J2EE (Java 2 Enterprise Edition)
  • 선 마이크로시스템즈
  • 오픈 소스 프로젝트
  • 디자인 패턴 적극 활용
  • 최초로 의존성 주입 패턴 활용한 프레임워크

 

1.1. 스프링 부트

  • 개발 방식 단순화
  • 바로 돌려볼 수 있는 스프링 기반 앱
  • 서버가 내장된 단독형 애플리케이션도 100% 실행 가능한 형태로 개발 가능

 

1.1.1. 스프링 애플리케이션

 

WAR(Web ARchive, 웹 아카이브) 파일 내부 폴더 구조

● WEB-INF 폴더 (필수)

    ㄴ lib 폴더 - 서드파티 라이브러리

    ㄴ classes 폴더 - 웹 애플리케이션 클래스

● JSP, HTML, CSS, 이미지, 자바스크립트 파일 (선택)

● web.xml 파일 - 디스패처 서블릿 선언 (org.springframework.web.servlet.DispatcherServlet 클래스)

● <서블릿명>-servlet.xml 스프링 빈 구성 파일

 

WAR 파일

  • 유틸리티로 패키징
  • 톰캣(Tomcat), 제티(Jetty), 제이보스(Jboss), 웹스피어(WebSphere) 같은 애플리케이션 서버 또는 컨테이너에 올려놓고 실행
  • J2EE 앱을 배포하는 전용 서버를 따로 운용하기도 함

 

 

1.1.3 왜 스프링 부트인가?

  • 12-팩터 앱 가이드를 준수한 클라우드 네이티브 애플리케이션
  • 개발과 배포 시간을 줄여 생산성을 높임
  • 바로 제품 출시가 가능한 엔터프라이즈 스프링 앱 개발
  • 스프링 부트 엑추에이터 및 웹 애플리케이션을 실행할 내장 컨테이너 같은 비기능적 요건 충족
더보기

스프링 부트 엑추에이터 (Spring Boot Actuator)

상태 체크 등 앱 관리를 도와주는 모듈

 

내장 컨테이너 (Embedded container)

톰캣, 언더토우, 제티 등

 

스프링 부트는 번거로운 일은 스프링 프레임워크에 맡겨두고 개발자는 오직 비즈니스 로직에 전념할 수 있게 돕는다.

 

 

1.1.4 스프링 부트의 주요 기능

 

SpringApplication

스프링 앱을 간편히 초기화하는 싱글턴 클래스

자바 스프링 부트 앱의 main 메서드에서 실행됨

 

SpringApplicationBuilder

연결형 빌더 API를 제공하는 싱글턴 클래스

여러 앱 컨텍스트를 계층화할 수 있다.

 

ApplicationArguments 

앱에 어떤 인자를 건네주고 실행할 때 유용한 인터페이스

스프링 부트에서는 애플리케이션 인자에 얼마든지 접근 가능하다.

 

@Enable<기술명>

DB, 캐싱, 스케줄링, 메시징, 스프링 통합/배치 등의 기술을 구성하고 적용할 수 있다.

 

 

스프링 부트로 애플리케이션을 개발하면 XML 구성 파일이 거의 필요 없다.

스프링 부트는 코드를 생성하지 않기 때문이다.

 

스프링 부트는 플랫폼에 독립적이기 때문에 컨테이너에 내장된 웹 애플리케이션이든 단독형 애플리케이션이든 어떤 타입의 앱이더라도 올바르게 개발할 수 있고, 프로파일(Profile) 덕분에 앱을 다양한 환경에서 실행할 수 있다.

 

스프링 부트는 앱 시동 후 코드를 실행할 수 있다.

CommandLineRunner 인터페이스의 run 메서드를 구현하면 된다.

 

JMX(Java Management eXtensions)로 관리자 기능을 추가할 수 있다.

application.properties 혹은 application.yml 파일에서 spring.application.admin.enabled 프로퍼티를 켜면 된다.

 

스타터 폼(Starter pom)으로 의존체를 알기 쉽게 구성, 관리할 수 있다.

메이븐 폼 또는 그레이들 빌드 파일에 spring-boot-start-web 의존체를 추가하면 된다.