Skip to main content

Spring Triangle

  • 단어의 의미들을 정의하여 정리함. → 장단점, 자세한 원리, 코드 추가하자.

IoC

제어의 역전.

여기서 말하는 제어는 객체의 생성, 의존 관계 설정, 사용, 제거등을 제어하는 것을 의미합니다.

이러한 객체의 제어를 어플리케이션 코드 대신 Spring IoC Container가 담당하기 때문에 제어의 역전이라고 말합니다.

BEAN

bean이란 앞서 설명한 Spring Container가 관리하는 객체를 의미합니다.

bean으로 등록한 클래스의 경우에만 제어의 역전을 통해 Spring Container가 클래스의 객체를 관리할 수 있습니다.

BEAN 등록.

bean으로 등록하는 방법은 Configuration에 빈으로 등록하고자하는 클래스의 객체를 반환하는 메소드를 bean어노테이션으로 등록해주는 방법이 있으며 클래스에 @Component 어노테이션을 사용하여 등록하는 방법 또한 있습니다.

BEAN 주입.( DI )

두 객체간의 관계는 의존 관계이며 하나의 객체에서 다른 객체가 사용될 수 있도록합니다. 이때, DI는 객체들간의 관계를 관리할 때 사용하는 기법이며 의존적인 객체를 소스코드에서 직접 생성하고 제어하는 것이 아니라 외부에서 결정해서 연결(주입)합니다. 의존 관계란 말이 추상적이어서 명확하게 한번에 이해하기 어려울 수 있는데, A가 B를 의존한다는 것은 B의 변화가 A에 영향을 미치는 것이라 할 수 있습니다.

BEAN 주입 방법.

spring에서 bean 주입, 즉 DI(의존관계 주입)은 Spring Container에 의해 외부에서 일어나며, 따라서 생성자 키워드를 사용해 소스코드에서 직접 인스턴스를 생성하지 않고 아래와 같은 방법을 사용합니다.

  • 필드 주입
  • setter 주입
  • 생성자 주입 (권장)

AOP

관점 지향 프로그래밍.

객체 지향 프로그래밍이 객체를 중심으로 프로그램을 바라본다면 관점 지향 프로그래밍은 관점(기능) 중심으로 프로그램을 바라보는 것입니다.

여러 객체에 동일한 기능의 코드들이 중복해서 구현되어있을 경우, 해당 기능을 하나의 관점으로 보고 AOP를 적용하면 한번에 관리를 할 수 있게 됩니다.

이렇게 함으로써 핵심 로직을 깔끔하게 유지할 수 있게하고, 가독성 유지보수성을 높입니다.

@Transactional 어노테이션도 aop에서 제공하는 어노테이션입니다.

적용방법 :

@Aspect 어노테이션으로 특정 기능 코드 작성.

@LogExecutionTime(커스텀 어노테이션)으로 어디에 적용할지 표시.

PSA( Portable Service Abstraction )

환경( 기술 스택, 사용하는 구현체의 변경 )과 관계없이 일관된 방식의 접근 환경을 제공하는 추상화 구조를 말합니다.

즉, 객체들을 POJO 기반으로 한번 더 추상화한 Layer를 통해 유연한 기술 변경 및 확장을 가능하게하고 이용자에게는 편의성을 제공합니다.

Spring은 Spring MVC, Spring Transaction, Spring Cache등의 PSA를 제공합니다.