If at first you don't succeed, try again

[Spring] 오브젝트와 의존관계 본문

Java/Spring

[Spring] 오브젝트와 의존관계

웅지니어링 2024. 10. 11. 17:41
  • 전략 패턴 : 개방 폐쇄 원칙의 실현에 가장 잘 들어 맞는 패턴. 전략 패턴은 자신의 기능 맥락에서 필요에 따라 변경이 필요한 알고리즘을 인터페이스를 통해 통째로 외부로 분리시키고, 이를 구현한 구체적인 알고리즘 클래스를 필요에 따라 바꿔서 사용할 수 있게 하는 디자인 패턴.
  • 라이브러리 vs 프레임워크 : 라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다. 단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용한다. 반면에 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용된다.
  • Spring Bean 오브젝트란? : 스프링에서 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트. 스프링 빈은 스프링 컨테이너가 생성과 관계설정, 사용 등을 제어해주는 제어의 역전(IoC)이 적용된 오브젝트
  • Bean Factory? Application Context? : 빈의 생성과 관계 설정 같은 제어를 담당하는 IoC 오브젝트를 빈 팩토리라고 부른다. 하지만 보통 빈 팩토리보다는 이를 좀 더 확장한 애플리케이션 컨텍스트(Application Context)를 주로 사용한다. 빈 팩토리 < 애플리케이션 컨텍스트 처럼 애플리케이션 컨텍스트가 전반적으로 좀 더 큰 개념. 빈 팩토리 = IoC의 기본 기능에 초점. 애플리케이션 컨텍스트 = 모든 구성요소의 제어 작업하는 IoC 엔진
  • 빈 팩토리 (BeanFactory)
    • Spring의 가장 기본적인 IoC(Inversion of Control) 컨테이너로, 객체(빈)를 생성하고 DI(의존성 주입)를 관리한다.
    • Lazy loading 방식으로 필요할 때 빈을 생성한다. 즉, 빈이 실제로 요청될 때만 초기화된다.
  • 애플리케이션 컨텍스트 (ApplicationContext)
    • BeanFactory를 확장한 더 큰 기능의 IoC 컨테이너. 빈을 생성하고 관리하는 기능 외에도 여러 부가 기능을 제공.
    • Eager loading 방식으로 기본적으로 애플리케이션이 시작될 때 모든 빈을 미리 초기화한다.
  • Lazy Loading (지연 로딩) : 객체를 실제로 필요할 때까지 로드하지 않고, 해당 객체에 대한 접근이 이루어질 때 로드하는 방식이다.
  • Eager Loading (즉시 로딩) : 객체를 사용할 준비가 되었을 때, 즉시 관련된 모든 데이터를 로드하는 방식이다.
  • 의존관계 주입(Dependency Injection)
    • 클래스 모델이나 코드에는 런타임 시점의 의존관계가 드러나지 않는다. 그러기 위해서는 인터페이스에만 의존하고 있어야 한다.
    • 런타임 시점의 의존관계는 컨테이너나 팩토리 같은 제3의 존재가 결정한다.
    • 의존 관계는 사용할 오브젝트에 대한 레퍼런스를 외부에서 제공해줌으로써 만들어진다.

'Java > Spring' 카테고리의 다른 글

[Spring] 의존성 주입  (0) 2024.10.16
[Spring] Springboot 사용법과 MVC 패턴  (0) 2022.12.30