01. 스프링부트란?

마라탕천재 ㅣ 2024. 6. 15. 00:36

1. 스프링부트란?

스프링부트란 스프링(Spring)프레임워크 기반의 자바 에플리케이션 개발을 위한 오픈소스 프로젝트이다.

 

2. 스프링의 특징

2.1 제어의 역전 (IoC : Inversion of Contol)

사용할 객체를 직접 생성하지 않고 객체의 생명명주기 관리는 외부에 위임하는 것을 말한다. 

여기서 '외부'란 스프링 컨테이터 또는 IoC 컨테이너를 의미한다. 객체의 관리를 컨테이너에 맡겨 제어권이 넘어간 것을 제어의 역전이라고 말한다.

 

2.2 의존성 주입 (DI : Dependency Injection)

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

  1. 생성자
  2. 필드 객체 선언
  3. setter 메서드

 

2.3 관점 지향 프로그래밍(AOP : Aspect Object Programming)

관점을 기준으로 묶어 개발하는 방식을 의미한다. 여기서 관점(aspect)란 어떤 기능을 구현할 때 그 기능을 '핵심기능'과 '부가기능'으로 구분해 각각을 하나의 관점으로 보는 것이다. 

'핵심 기능'은 비즈니스 로직이 처리하려는 목적 기능을 의미하고, '부가기능'은 로깅, 트랜잭션 처리, 보안 등의 기능은 비즈니스 로직과는 별개의 횡단 관심사(여러 모듈에 걸쳐있는 공통적인 관심사)이다.

AOP는 이런 횡단 관심사를 모듈화하여 핵심 비즈니스 로직에서 분리함으로써, 코드를 깔끔하게 유지하고 관심사를 효과적으로 분리할 수 있게 해주는 프로그래밍 기법이다.

AOP를 구현하는 방법은 

  1. 컴파일 과정에 삽입하는 방식
  2. 바이트 코드를 메모리에 로드하는 과정에 삽입하는 방식
  3. 프록시 패턴을 이용한 방식

이 있다.