Section 2-3:: 스프링 핵심 원리 이해
🙊

Section 2-3:: 스프링 핵심 원리 이해

Created
Jan 4, 2024 06:20 AM
Last edited time
Last updated January 25, 2024
Tags
Spring
Backend
Language
Java
💡
spring-boot 3.x.x 부터는 jdk 17 이상을 사용해야 한다.
 
  • gradle 실패하는 경우
    • jdk 17 이상인가?
    • intellij builld gradle 설정이 jdk17로 잘 되어있는가?
  • application 이 잘실행되면 굳
 

회원 도메인 설계

  • 회원 도메인 요구사항
  • 회원을 가입하고 조회할 수 있다.
  • 회원은 일반과 VIP 두 가지 등급이 있다.
  • 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정)
 
notion image
notion image
 
💡
항상 다형성을 생각하면서 interface를 통해 역할과 구현을 분리하자
 

제어의 역전 IoC(Inversion of Control)

  • 기존 프로그램은 클라이언트 구현 객체가 스스로 서버 구현 객체를 생성하고, 연결하고, 실행한다. 한마디로 구현 객체가 프로그램 제어 흐름을 스스로 조종한다. 개발자의 입장에서는 자연스러운 흐름이다.
  • 반면에 AppConfig가 등장하면서 구현 객체는 자신의 로직만 담당하고, AppConfig가 프로그램의 제어 프름을 가진다.
  • 이렇게 프로그램의 제어 프름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)라 한다.
 

프레임워크 vs 라이브러리

  • 프레인워크가 내가 작성한 코드를 제어하고, 대신 실행하면 그것은 프레임워크(JUnit)
  • 내가 작성한 코드가 직접 제어의 흐름을 담당한다면 라이브러리
 

의존 관계 주입 DI(Dependency Injection)

  • 정적인 클래스 의존 관계와, 실행 시점에 결정되는 동작인 객체(인스턴스) 의존관계 들을 분리해서 생각해야 한다.
    • 정적인 클래스 의존관계
      • 클래스가 사용하는 import 코드만 보고 의존관계를 쉽게 알수있다. 정적인 의존관계는 애플리케이션을 실행하지 않아도 분석할 수 있다. → 클래스 다이어그램을 보자.
    • 돈적인 객체 인스턴스 의존 관계
      • 애플리케이션 실행 시점에 실제 생성한 객체 인스턴스의 참조가 연결된 의존 관계이다.
  • 애플리케이션 실행 시점(런타임)에 외부에서 실제 구현 객체를 생선하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결되는 것을 의존관계 주입이라 한다.

IoC, DI 컨테이너

  • AppConfig 처럼 객체를 생성하고 관리하면서 의존 관계를 연결해 주는 것을 IoC, DI 컨테이너라고 한다.
  • 의존관계 주입에 초점을 맞추어 최근에는 주로 DI 컨테이너라 한다.
  • 또는 어셈블리, 오브젝트 팩토리 등으로 불리기도 한다.
  • 기존에는 개발자가 직접 자바코드로 모든 것을 했다면 이제부터는 스프링 컨테이너에 객체를 스프링 빈으로 등록 하고, 스프링 컨테이너에서 스프링 빈을 찾아서 사용하도록 변경되었다.
 

Loading Comments...