스프링의 핵심 3대 요소 Spring Triangle

Eden Ko·2022년 1월 12일
0

Spring 이론정리

목록 보기
1/1

1. IOC, Inversoin of Control : 제어권의 역전

객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀜

Spring IoC Container

객체를 생성하고 관리하고 책임지고 의존성을 관리해주는 컨테이너

  • IoC 컨테이너는 객체의 생성을 책임지고, 의존성을 관리함
  • POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가짐
  • 개발자는 비즈니스 로직에 집중할 수 있음
  • 객체 생성 코드가 없으므로 TDD 용이

    POJO(Plain Old Java Object)란?
    주로 특정 자바 모델이나 기능, 프레임워크를 따르지 않는 Java Object를 지칭하며,
    대표적으로 Java Bean 객체가 있음
    ex) getter / setter

Spring Bean

Bean은 IoC 컨테이너가 관리하는 객체

DI, Dependency Injection : 의존성 주입

각 클래스간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결

2. AOP, Aspect Oriented Programming : 관점 지향 프로그래밍

스프링의 DI가 의존성의 주입이라면 AOP는 코드 주입
주요 기능과 핵심 기능 구현을 위한 부가적인 기능 구현을 분리하여 각각의 관점별로 묶어서 개발하는 방식

  • 기존의 코드에 첨삭 없이, 메소드의 호출 이전 또는 이후에 필요한 로직을 수행하는 방법을 제공
  • AOP는 코드가 없는데도 코드가 있는 것처럼
  • @Transctional이 AOP 기반으로 만들어진 어노테이션

    Aspect: 흩어져있는 관심사인 부가 기능들이 모듈화한 것
    Target: 모듈화된 부가 기능(Aspect)을 수행해줘야 하는 주요 비지니스 클래스 or 메서드 등을 의미
    Advice: Target 에 종속되지 않고 순수하게 부가 기능만 실제로 구현된 부분, 부가 기능 구현체
    JointPoint: 구현된 부가 기능(Advice)을 실제 수행할 지점
    PointCut: 부가기능을 수행할 지점(Advice)에 대한 스펙 정의서
    Advisor: PointCut + Advice (스프링 AOP 에서 사용하는 특별한 용어)

3. PSA, Portable Service Abstraction : 일관성 있는 서비스 추상화

다른 여러 모듈을 사용함에 있어서 별도의 추상화 레이어 제공 (slf4j)

  • 추상화 계층을 사용해 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공하는 것
  • Spring Web MVC, Spring Transaction, Spring Cache 등
  • 스프링은 원래 Tomcat 기반으로 돌아가는데, dependency에서 web을 webflux로 바꾸고 다시 실행해보면 Netty 기반으로 돌아간다. 스프링의 PSA 덕분에 코드를 거의 바꾸지 않고도 톰캣이 아닌 완전히 다른 기술로 실행이 가능하다는 의미한다.

참고
https://spring.io/
https://dev-coco.tistory.com/80
https://zion830.tistory.com/109
https://velog.io/@dusdn2424

profile
Junior Developer

0개의 댓글