책/기술 관련

자바 객체지향의 원리와 이해 07. 스프링 삼각형과 설정 정보

Mev01 2022. 2. 19. 02:04

http://www.yes24.com/Product/Goods/17350624

 

스프링 입문을 위한 자바 객체 지향의 원리와 이해 - YES24

자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량 애플리케이션 프레임워크인 스프링은 자바와 객체 지향이라는 기반 위에 굳건히 세워져 있다. 따라서 스프링을 제대로 이해하고 활용

www.yes24.com

(스프링 입문을 위한 자바 객체 지향의 원리와 이해, 2015)을 학습하고 개인 학습용으로 정리한 내용입니다.

 

 

Spring을 이해하기 위해서 POJO를 기반으로 스프링 삼각형(IoC/DI, AOP, PSA)라는 3대 프로그래밍 모델에 대한 이해가 필수

 

 

IoC/DI


운전자가 자동차를 생산하는 과정을 예로 들어서 설명

 

원래 과정(자동차는 타이어에 의존한다.)

  1. 운전자가 자동차를 만드려고 한다.
  2. 자동차를 만드는 곳에서 타이어를 선택해 자동차에 장착한다.
  3. 운전자가 자동차를 받는다

이러한 방법은 타이어 종류가 많아질 경우 유연성이 떨어진다.

 

의존성 주입으로 바꾼 과정

  1. 운전차가 타이어를 만든다.
  2. 운전자가 자동차를 만든다.
  3. 운전자가 자동차에 타이어를 장착한다.

확장성 좋은 코드로 바꿀 수 있었다.

이 방법은 디자인 패턴의 전략 패턴을 응용하고 있다.

전략 메서드를 가진 전략 객체 - 타이어

전략 객체를 사용하는 컨텍스트 - 차

전략 객체를 생성해 컨텍스트에 주입하는 클라이언트 - 운전자

 

스프링을 통한 의존성 주입

  1. 운전자가 종합 쇼핑몰(Spring)에 방문한다.
  2. 운전자가 자동차를 구매하려 한다.
  3. 종합 쇼핑몰에서 자동차를 생산한다.
  4. 종합 쇼핑몰에서 타이어를 생산한다.
  5. 종합 쇼핑몰에서 자동차에 타이어를 장착한다.
  6. 운전자에게 자동차를 전달한다.

 

 

AOP(Aspect oriented Programming)


횡단 관심사를 모듈화하는 것

Aspect = advice(pointcut에 적용할 로직) + pointcut(Aspect 적용이 가능한 지점)

 

스프링 AOP는 인터페이스 기반이다.

스프링 AOP는 프록시 기반이다.

스프링 AOP는 런타임 기반이다.

 

 

PSA


일관성 있는 서비스 추상화

서비스 추상화: 어댑터 패턴을 적용하여 같은 일을 하는 다수의 기술을 공통의 인터페이스로 제어할 수 있게 한 것