Framework | Library | Tool/Spring Core

Spring Triangle : 스프링을 지탱하는 원리

주정용 2021. 6. 6. 20:03
728x90
  • Dependency Injection
  • Inversion of Control
  • Portable Service Abstraction

Dependency Injection


소개

  • 의존성은 쉽게 이야기하면 new입니다.
  • DI는 new를 사용하여 어떤 컴포넌트에 의존성을 주입하는 것입니다.

DI 방법

  • 의존성은 크게 2가지 방법으로 주입할 수 있습니다.

Constructor Injection

  • 컴포넌트를 생성할 때 컨테이너에 있는 의존성을 주입합니다.
  • DI 시점을 파악할 수 있습니다.
    • 권장되는 DI 방법입니다.

Setter Injection

  • 생성된 컴포넌트에 임의의 시점에 의존성을 주입합니다.
  • DI 시점을 파악하기 어렵습니다.

@Autowired와 @Resource

  • Autowired
    • 스프링 프레임워크 에너테이션
    • Type, Name 순서대로 Bean 검색
    • @Qualifier와 협업
    • Name 설정 : @Autowired@Qualifier("이름")
  • Resource
    • 자바 표준 에너테이션
    • Name, Type 순서대로 Bean 검색
    • attribute로 name이 있음
    • Name 설정 : @Resource(name="이름")

Inversion of Control


소개

  • 컴포넌트의 호출이 외부에서 결정되는 원리입니다.
  • 개발자가 호출하지 않고, 컨테이너가 필요한 상황에서 알맞게 호출합니다.

Portable Service Abstraction


소개

  • 서비스 추상화(Service Abstraction)이란 어떤 것을 내부적으로 숨기고 그 위에 있는 추상화 계층으로 서비스를 제공해주는 것입니다.
  • 스프링에서 서블릿이 드러나지 않고, 컨트롤러가 서블릿 애플리케이션이 작동하도록 하는 것도 서비스 추상화입니다.
  • 여기에서 Portable을 더하면, 서비스 추상화로 제공되는 기능을 다른 컴포넌트를 통해서 바꿀 수 있는 확장성이 추가됩니다.
  • PSA란 유연한 확장성이 가능한 서비스 추상화입니다.
  • ex)JDBC, JPA 등

'Framework | Library | Tool > Spring Core' 카테고리의 다른 글

스프링의 AOP  (0) 2022.05.01
Spring Properties 주요 설정  (0) 2020.03.30