스프링 프레임워크
- 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 의존체를 추가하면 된다.
'BOOK REVIEW > 실전 스프링 부트 워크북' 카테고리의 다른 글
[실전 스프링 부트 워크북] CH5. 스프링과 스프링 부트 (0) | 2021.08.15 |
---|---|
[실전 스프링 부트 워크북] 스프링부트 애플리케이션 구성 알아보기 / 스프링 부트 프로젝트 따라하기 (0) | 2021.08.14 |
[실전 스프링 부트 워크북] CH3 스프링 부트 자동 구성과 주요 기능 (0) | 2021.08.13 |
[실전 스프링 부트 워크북] 스프링 부트 일기 / 스프링 부트 프로젝트 따라하기 (0) | 2021.08.10 |
[실전 스프링 부트 워크북] CH2 스프링 부트 앱 첫 개발 (0) | 2021.08.10 |