Skip to content

Latest commit

 

History

History
35 lines (26 loc) · 1.73 KB

File metadata and controls

35 lines (26 loc) · 1.73 KB

Spring 사용 이유

  • 현실적으로 한국 기업에서 많이 활용되고 있음
  • 스프링 생태계의 편의성과 안정성: ORM, Cloud, Security, Batch 등 엔터프라이즈에 필요한 기능들을 모두 직접 제공해줌
  • AOP를 지향하고 DI를 지원해줌으로써, 개발자가 핵심 비즈니스 로직에만 집중할 수 있도록 해줌

Dependency Injection

  • 객체가 사용하는 의존 객체를 직접 만드는 대신 주입 받아서 사용하게 하는 방식
  • 스프링 IoC 컨테이너
    • 컨테이너의 의존성 주입 기능을 통해 객체 간 결합도를 줄이고, 코드 중복도 줄일 수 있음
    • 컨테이너는 객체를 Bean으로 관리하며, 객체 생성 및 소멸 관련 작업 자동 수행
  • DI 활용 방식: Setter 방식, 생성자 방식, 메서드 방식

Inversion of Control

  • "제어의 주체를 역전시킨다"는 설계 원칙
  • 객체가 직접 의존성을 생성하거나 관리하지 않고, 외부(컨테이너)가 이를 대신하도록 해서 제어를 역전시키는 구조
  • DI는 IoC를 구현하는 대표적인 방법
  • 스프링에서는 BeanFactory, ApplicationContext로 구현되어 있음
  • 이를 활용해서 컴포넌트 간 결합도를 줄이고, 코드의 모듈화, 테스트 용이성을 높일 수 있음

AOP 사용 이유

  • 공통 관심사를 핵심적인 비즈니스 로직으로부터 분리하고 모듈화를 해줌
  • 프록시 기반의 runtime weaving
    • 프록시 객체를 생성해두는 방식으로, 컴파일 단계가 아닌 런타임에 모듈화된 부가기능을 적용할 수 있음

적용 사례

  • 로깅 / 감사(auditing)
  • 트랜잭션 관리
  • 보안 검사
  • 성능 측정 / 메트릭
  • 예외 처리