본문 바로가기
Springboot

[Springboot] 1. 스프링부트란?

by 상도동개발자 2023. 2. 8.
SMALL

스프링 프레임워크는 자바 기반의 애플리케이션 프레임워크로 엔터프라이즈급 애플리케이션을 개발하기 위한 다양한 기능을 제공한다. 스프링은 목적에 따라 다양한 프로젝트를 제공하는데 그 중 하나가 스프링부트이다.

 

1. 스프링 프레임워크

스프링부트에 대해 알아가기전에 스프링에 대해 먼저 알아야한다. 스프링은 자바에서 가장 많이 사용하는 프레임워크이며 현재 우리나라의 '전자정부 표준 프레임워크'의 기반으로 채택되어 공공기관 웹 서비스 개발시에도 이용 된다.

 

1-1. 제어 역전(Ioc)

일반적은 자바 개발의 경우 객체를 사용하기위에 아래와 같은 코드를 사용한다. 즉 객체를 선언하고 해당 객체의 의존성을 생성한 후 객체에서 제공하는 기능을 사용하므로 작업을 개발자가 직접 제어합니다.

개발자가 직접 제어하는 구조

하지만 제어 역전을 특징으로 하는 스프링은 사용자가 객체를 직접 생성하지 않고 객체의 LifeCycle을 IoC컨테이너에게 위임하여 관리합니다. 객체의 관리를 컨테이너에게 맡겨 제어권이 넘어간 것을 제어 역전이라고 부르며, 제어 역전을 통해 의존성 주입(DI), 관점 지향 프로그래밍(AOP)등이 가능해집니다.

 

1-2. 의존성 주입

의존성 주입(DI)란 제어 역전의 방법 중 하나로, 사용 할 객체를 직접 생성하지 않고 외부 컨테이너가 생성한 객체를 주입받아 사용하는 방식을 의미합니다. 스프링에서 의존성을 주입받는 방법은 세가지가 있습니다.

1-2-1. 생성자를 통합 의존성 주입

생성자를 통한 의존성 주입

1-2-2. 필드 객체 선언을 통한 의존성 주입

필드 객체 선언을 통한 의존성 주입

1-2-3. setter 메서드를 통한 의존성 주입

setter 메서드를 통한 의존성 주입

1-3. 관점 지향 프로그래밍(AOP)

AOP는 관점을 기준으로 묶어 개발하는 방식을 의미합니다. 관점이란 어떤 기능을 구현 할 때 핵심 기능과 부가 기능으로 구분해 각각을 하나의 관점으로 보는것을 의미합니다. 핵심기능은 핵심 비즈니스 로직으로 구현 되는 기능을 말합니다. 예를 들어 상품 정보 등록 요청을 받아 DB에 저장하고 조회하는 로직을 구현한다면 DB저장, 데이터 조회등이 핵심 기능입니다. 부가기능으로는 로깅, 트랜잭션 등이 있습니다.

 

- AOP를 사용하지 않은 애플리케이션의 로직

OOP 방식의 애플리케이션 로직

- AOP를 사용한 애플리케이션의 로직

AOP 방식의 애플리케이션 로직

위의 로직을 보았을때 관점으로 묶여서 작업을 처리한다면 반복되는 부가 기능을 하나의 로직으로 묶어내어 활용 할 수 있습니다.

 

2. 스프링부트를 사용하는 이유

앞의 살펴본것처럼 스프링 프레임워크는 다양한 기능들을 제공해주지만 다양한 만큼 설정이 복잡합니다. 하지만 스프링 부트는 별도의 복잡한 설징이 없이도 스프링 프레임워크를 이용 할 수 있습니다.

 

2-1. 의존성 관리

스프링 프레임워크에서는 개발에 필요한 모듈의 의존성을 직접 설정해야하며 호환되는 버전을 찾아서 명시해줘야 했습니다. 하지만 스프링 부트에서는 자주 사용되고 서로 호환되는 버전의 모듈 조합을 제공되어 라이브러리 호환 문제를 해결 할 수 있습니다. 아래는 spring-boot-starter 모듈 중 'spring-boot-starter-web'이 제공하는 의존성 호환 조합의 일부입니다.

위의  라이브러리에는 테스트 라이브러리,jdbc, security, jpa, cache등 여러 설정을 어렵지 않게 'spring-boot-starter-web'의 의존성 하나만으로 설정이 가능합니다.

 

2-2. 자동 설정

스프링 부트는 스프링 프레임워크의 기능을 사용하기 위한 자동 설정(Auto Configuration)을 지원합니다. 자동 설정을 애플리케이션에 추가된 라이브러리를 실행하는데 필요한 환경 설정을 알아서 찾아줍니다.

실행에 필요한 복잡했던 설정이 @SpringBootApplication 어노테이션으로 해결이 가능합니다.

 

2-3. 내장 WAS

스프링부트의 각 웹 애플리케이션에는 내장 WAS가 존재합니다.

 

2-4. 모니터링

개발 완료 후 서비스 운영 시기에 해당 시스템이 사용하는 스레드, 메모리, 세션등 주요 요소들을 모니터링 해야하는데 스프링 부트에서는 스프링 부트 액추에이터(Spring Boot Actuator) 라는 모니터링 도구로 가능합니다.

 

 

728x90
반응형
LIST

댓글