[공부 일지] 1. 스프링 부트란?

모히또·2025년 5월 20일

공부 일지

목록 보기
1/3

📌 Spring

🔷 스프링은 자바로 애플리케이션을 개발하는 데 필요한 기능을 제공하고 쉽게 사용하도록 돕는 도구

⭐ 스프링의 특징과 구조

🔷 1. 제어 역전(IoC)
일반적인 자바 개발의 경우와 다르게 사용할 객체를 직접 생성하지 않고 객체의 생명주기 관리를 외부에 위임한다. 이를 통해 개발자는 비즈니스 로직을 작성하는 데 더 집중할 수 있다.

🔷 2. 의존성 주입(DI)
제어 역전의 방법 중 하나로, 외부 컨테이너가 생성한 객체를 주입받아 사용하는 방식으로 3가지 방법이 있다.

  • 생성자를 통한 의존성 주입
  • 필드 객체 선언을 통한 의존성 주입
  • 세터 메서드를 통한 의존성 주입

이 중에서 생성자를 통한 의존성 주입받는 방식을 권장한다. 다른 방식과는 다르게 레퍼런스 객체 없이는 객체를 초기화 할 수 없게 설계할 수 있기 때문이다.

@Autowired : 스프링에서 의존성을 주입하는 애너테이션(annotation)

🔷 3. 관점 지향 프로그래밍(AOP)
AOP는 관점을 기준으로 묶어 개발하는 방식이다. 관점이란 어떤 기능을 구현할 때 '핵심 기능'과 '부가 기능'으로 구분해 각각을 하나의 관점으로 보는 것을 말한다
밑 예시는 클라이언트로부터 상품 정보 등록 요청을 받아 데이터베이스에 저장하고, 그 상품 정보를 조회하는 비즈니스 로직을 구현할 때, 상품 정보 등록과 상품 정보 조회가 핵심 기능이다.
부가 기능을 추가 할 때는 핵심 기능 사이에 로깅 처리 또는 트랜잭션을 처리하면 된다.

AOP 구현하는 방법

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

스프링은 프락시 패턴을 통해 AOP 기능을 제공하고 있다.
따라서, OOP와 같이 모듈화된 객체 구조와 이 핵심 기능을 수행하는 로직 이전에 부가 기능을 수행 함으로써 개발자가 온전히 비즈니스 로직만을 구현하는데 집중하게 해준다.

⭐ 스프링 프레임워크 vs 스프링 부트

스프링 프레임워크스프링 부트
설정복잡단순
의존성 관리직접 설정'spring-boot-starter' 의존성 제공
자동설정없음자동설정 지원
내장 WAS없음, 외부 WAS에 배포해야 함Tomcat 등 내장 WAS 지원
모니터링직접 구현Spring Boot Acctuator로 모니터링 지원
profile
신입 개발자 윤현수입니다!

0개의 댓글