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를 제공합니다.