백엔드 데브코스 TIL 20일차

Inchang Choi·2022년 4월 18일
0

백엔드 데브코스 TIL

목록 보기
14/30
post-thumbnail

학습목표

강의를 들으며 내가 알고 있는 내용을 점검하고,

새로 배운 내용을 정리하며,

궁금한 내용을 알아가며 학습해나가는 것을 목표로 합니다.


Aspect Orient Programming

관점 지향 프로그램은 횡단 관심사의 분리를 허용함으로써 모듈성을 증가시키는 것의 목적인 프로그래밍 패러다임 입니다.

코드 그 자체를 수정하지 않는 대신 기존의 코드에 추가 동작을 추가함으로써 수행하며 어느 코드가 포인트컷 사양을 통해 수정 되는지를 따로 지정합니다.

이를 통해 기능의 코드 핵심부를 어수선하게 채우지 않고도, 비즈니스 로직에 핵심적이지 않은 동작들을 프로그램에 추가할 수 있게 합니다.

Cross Cutting Concerns

Spring 에서는 각각의 레이어를 넘나들어 공통적으로 수행해야하는 핵심 기능들이 있습니다.

(Logging, Transaction Management, Security)등

이러한 기능들을 횡단 관심사로 분리하여 핵심 기능과 부가 기능을 분리하여 모듈성을 증가 시키는 것입니다.

AOP 적용 방법

  • 컴파일 시점 AOP를 적용하는 프레임워크가 소스 코드를 컴파일 하기 전에 소스 코드에 공통 기능을 삽입합니다.
  • 클래스 로딩 시점 클래스를 로딩할 때 ByteCode에 부가기능을 삽입합니다.
  • 런타임 시점 스프링에서 제공하는 AOP 방식입니다. Proxy를 객체를 이용합니다.

Spring AOP

AOP Proxies

  • JDK Proxy (interface based)
  • CGLib Proxy (class based)

Spring은 Schema-based AOP 또는 @AspectJ 어노테이션을 이용해 aspect 작성을 제공합니다.

@AspectJ support

타겟(Target)

  • 핵심 기능을 담고 있는 모듈로서 부가기능을 부여할 대상입니다.
  • 즉 AOP를 적용할 대상입니다.

조인포인트(Join Point)

  • 어드바이스가 적용될 수 있는 위치
  • 타겟 객체가 구현한 인터페이스의 모든 메서드

포인트 컷(Pointcut)

  • 어드바이스를 적용할 타겟의 메서드를 선별하는 정규표현식
  • 포인트컷 표현식은 execution으로 시작하고 메서드의 Signature를 비교하는 방법을 주로 이용합니다.

애스펙트(Aspect)

  • 애스펙트 = 어드바이스 + 포인트컷
  • Spring에서는 Aspect를 빈으로 등록해서 사용합니다.
  • 부가기능의 집합을 모듈화 시킨 것입니다.

어드바이스(Advice)

https://mossgreen.github.io/Spring-Certification-Spring-AOP/

  • AOP 시작하기 8
  • 어드바이스는 타겟의 특정 조인트포인트에 제공할 부가기능입니다.
  • Advice에는 위의 그림과 같이 @Before, @After, @Around., @AfterReturning, @AfterThrowing 등이 있습니다.

위빙(Weaving)

  • 타겟의 조인 포인트에 어드바이스를 적용하는 과정입니다.

Spring Transaction 관리

TransactionManager, TransactionTemplate을 통하여 트랜잭션을 관리 할 수 있습니다.

@Transactional

스프링에서는 어노테이션을 통하여 선언적 트랜잭션 관리를 수행할 수 있습니다.

트랜잭션 전파

트랜잭션 격리

profile
always positive

0개의 댓글