본문 바로가기

Spring Boot/스프링 부트 핵심 가이드

[SpringBoot] 1.1 스프링 프레임워크

Summary : 스프링 프레임워크란, 개발자가 개발에만 집중할 수 있게 도와주는 자바 기반 프레임워크

 

🔍 목차


1.1 스프링 프레임워크
     1.1.1 제어 역전(IoC)
     1.1.2 의존성 주입(DI)
     1.1.3 관점 지향 프로그래밍(AOP)
     1.1.4 스프링 프레임워크의 다양한 모듈

💡 1.1 스프링 프레임워크


  • '전자정부 표준 프레임워크'의 기반 기술로 채택될 만큼 많이 사용하는 프레임워크
  • 엔터프라이즈급 개발을 편리하게 만들어줌
    (cf. 엔터프라이즈급 개발 : 기업 환경을 대상으로 하는 개발)
  • 핵심 가치는 '어플리케이션 개발에 필요한 기반을 제공하여 개발자가 비지니스 로직 구현에만 집중할 수 있게 하는 것'
  • 한마디로 자바로 어플리케이션을 개발하는데에 필요한 기능을 제공하는 도구

📌 1.1.1 제어 역전 (Inversion Of Control - IoC)


  • 정의 : 개발자가 객체의 제어를 외부에 위임하는 설계 원칙
  • 일반적인 자바 개발의 경우, 개발자가 직접 객체를 만들고 의존성을 설정함
  • 하지만 스프링에서는 객체의 생명주기 관리를 외부(스프링 컨테이너)에 위임함
    객체의 제어권이 컨테이너로 넘어가기 때문에 개발자는 비지니스 로직에 집중할 수 있게 됨
  • e.g. @Service 어노테이션을 이용하면 직접 객체를 생성하지 않아도 스프링 빈으로 생성되어 컨테이너에 등록되고,
    컨테이너 안에서 생명 주기 등이 관리된다.

📌 1.1.2 의존성 주입 (Dependency Injection - DI)


  • 정의 : 객체간의 의존성을 외부에서 결정하는 것
  • 의존할 객체를 직접 생성하지 않고, 외부 컨테이너로부터 객체를 주입받아 사용하는 방식
  • 스프링에서 의존성을 주입받는 세가지 방법
    1. 생성자를 통한 의존성 주입
    2. 필드 객체 선언을 통한 의존성 주입
    3. setter 메서드를 통한 의존성 주입
  • 이 중에서 가장 권장되는 것은 생성자를 통한 의존성 주입
    • 다른 방식과 다르게 생성자를 통한 의존성 주입은 레퍼런스 객체 없이는 객체를 초기화할 수 없기 때문
    • cf. 생성자를 통한 의존성 주입에서는 @Autowired를 생략할 수 있지만, 가독성을 위해 명시하기를 권장함

📌 1.1.3 관점 지향 프로그래밍(AOP)


  • 정의 : 어플리케이션의 기능을 '핵심 기능'과 '부가 기능'으로 나누고
    반복되는 부가 기능을 모듈화하여 핵심 기능 전후로 삽입하는 방식
  • 부가 기능은 핵심 기능과 상관없이 동일하게 작동하는 기능으로 로깅, 트랜젝션 등이 해당됨
  • cf. AOP와 OOP는 상반되는 개념이 아니다.
    AOP를 통해서 코드의 재사용성이 높아지고, 개발자는 핵심 기능(비지니스 로직)에만 집중할 수 있게 되므로
    AOP는 OOP를 더 잘 사용할 수 있게 도와준다.

📌 1.1.4 스프링 프레임워크의 다양한 모듈


  • 스프링 프레임워크는 기능별로 구분된 20여개의 모듈로 구성되어있음
  • 스프링 프레임워크를 사용한다고 해서 모든 모듈을 사용할 필요는 없으며, 필요한 모듈만 선택해서 사용하면 됨

 

※ 이 글은 [스프링 부트 핵심 가이드] 책의 내용을 정리한 글입니다. ※