일단 씻고 나가자
[스프링 부트 핵심 가이드] 01. 스프링 부트란? 본문
(본 포스팅은 해당 도서의 정리 및 개인 공부의 목적 포스팅임을 밝힙니다.)
장정우, 『스프링 부트 핵심 가이드 : 스프링 부트를 활용한 애플리케이션 개발 실무』, 위키북스, 2022
01. 스프링 부트란?
Spring Framework. 자바 기반의 다양한 기능을 제공하는 애플리케이션 프레임워크.
스프링은 목적에 따라 다양한 프로젝트를 제공하는데, 그 중 하나가 스프링 부트.
1.1 스프링 프레임워크
자바에서 가장 많이 사용하는 프레임워크로서, 현재 '전자정부 표준 프레임워크'로 채택되어 공공기관의 웹 서비스 개발에도 활용. 스프링의 목적은 엔터프라이즈급 개발(기업 환경의 대규모 데이터 처리 환경)에 필요한 기반을 제공하여, 개발자가 비즈니스 로직에만 집중할 수 있게끔 하는 '오픈소스 경량급 애플리케이션 프레임워크'.
1.1.1 제어 역전(IoC)
Inversion of Control.
기존의 자바 객체 생성과 다르게, 객체 생성을 개발자가 직접 하지 않고 '외부(Spring Container / IoC Container)'에 위임하여 객체의 생명주기를 맡기는 방식. 이렇게 객체의 관리를 위임하는 것을 제어 역전이라 하며, 이로서 의존성 주입(Dependency Injection), 관점 지향 프로그래밍(Aspect Oriented Programming)이 가능해진다.
1.1.2 의존성 주입(DI)
Dependency Injection.
객체를 직접 생성하지 않고 레퍼런스로만 두어, 외부 컨테이너가 생성한 객체를 주입 받아 사용하는 방식.
주로 @Autowired 어노테이션을 활용하여 주입 받으며, 크게 3가지 방식이 존재.
1. 생성자 | |
2. 필드 객체 선언 | |
3. setter 메서드 |
스프링 공식 문서에서는 레퍼런스 객체 없이는 객체를 초기화 할 수 없는 생성자 방식을 권장함.
1.1.3 관점 지향 프로그래밍(AOP)
Aspect Oriented Programming.
Aspect란 관점이란 뜻으로, 기능을 '핵심 기능', '부가 기능'으로 나누어 '부가 기능'에 관점을 맞춘다는 의미.
이때 핵심 기능은 실제 애플리케이션이 하는 비즈니스적 로직을 뜻하며
부가 기능은 그 외의 로깅, 트랜잭션 등을 뜻한다. (일례로 개별 함수의 처리 시간을 계산하는 기능을 들 수 있다.)
핵심 기능이 각 로직마다 다른 역할을 뜻한다면, 부가 기능은 각 핵심 기능에서 공통으로 처리될 수 있는 같은 기능이다.
AOP의 구현 방법은 크게 3가지로 나눌 수 있다.
- 컴파일 과정에 삽입
- 바이트코드를 메모리에 로드하는 과정에 삽입
- 프록시 패턴 이용
AOP 역시 재사용성에 목적을 두어 개발자가 비즈니스 로직에만 집중할 수 있도록 한다.
1.1.4 스프링 프레임워크의 다양한 모듈
Data, Web 등의 다양한 기능별로 분류하여 약 20여 개의 모듈을 제공하고 있다.
개발자는 필요한 모듈만 선택하여 사용하면 되며, 이를 '경량 컨테이너 설계'라 한다.
1.2 스프링 프레임워크 vs. 스프링 부트
스프링 프레임워크가 다양한 기능을 제공하는 데 반해 그만큼 설정이 복잡한 반면,
이러한 복잡한 설정을 해결하기 위해 등장한 것이 스프링 부트. (별도의 복잡한 설정이 필요 없다.)
1.2.1 의존성 관리
스프링 프레임워크에선 개발에 필요한 각 모듈의 설정 및 그와 연관된 다른 라이브러리들의 호환되는 버전까지도 직접 명시했어야 하는 반면, 스프링 부트에선 'spring-boot-starter'의 여러 버전을 제공하며 자주 사용되고 호환되는 버전의 모듈 조합을 제공.
종류로는 'spring-boot-starter-web/test/jdbc/security/data-jpa/cache' 등이 있으며, 여러 라이브러리 사용 시 의존성의 중첩을 피하려면 'spring-boot-starter-parent'를 활용하여 검증된 조합을 활용하는 방안이 있다.
1.2.2 자동 설정
Auto Configuration.
애플리케이션에 추가된 라이브러리를 실행하는 데 필요한 환경설정을 알아서 찾아줌. 개발자는 의존성 추가만으로 프레임워크가 자동으로 관리해주는 이점을 얻을 수 있음.
1.2.3 내장 WAS
스프링 부트의 각 웹 애플리케이션은 내장 WAS(Web Application Server)를 제공한다. 즉, 특별한 설정 없이도 톰캣의 실행이 가능해진다.
1.2.4 모니터링
스프링 부트 액추에이터(Spring Boot Actuator)라는 자체 모니터링 도구로, 서비스 운영 시기에 시스템이 사용하는 다양한 주요 요소를 모니터링 할 수 있음.
'Backend > Spring' 카테고리의 다른 글
[스프링 부트 핵심 가이드] 06. 데이터베이스 연동 (0) | 2023.06.01 |
---|---|
[스프링 부트 핵심 가이드] 05. API를 작성하는 다양한 방법 (0) | 2023.05.25 |
[스프링 부트 핵심 가이드] 04. 스프링 부트 애플리케이션 개발하기 (0) | 2023.05.23 |
[스프링 부트 핵심 가이드] 03. 개발 환경 구성 (0) | 2023.05.19 |
[스프링 부트 핵심 가이드] 02. 개발에 앞서 알면 좋은 기초 지식 (0) | 2023.05.18 |