Computer Science/테크톡 정리

[Spring] Spring Aop 란?

미스터로즈 2021. 8. 15. 22:28

우아한 테크톡 관련된 유튜브 강의 정리 내용입니다.

정확한 내용을 학습하고 싶으면 강의 링크 를 참고하시면 됩니다.


비지니스 로직 

  • 일반적으로 데이터베이스와 사용자 인터페이스 사이의 정보 교환을 처리하는 알고리즘을 설명하는 데 사용하는 비기술적 용어입니다.
  • 업무에 필요한 데이터처리를 수행하는 응용 프로그램의 일부를 말합니다.
  • 하나의 프로젝트나 프로그램 중 업무와 관련된 처리를 하는 일부분을 뜻합니다.

부가 기능

시간을 잰다든지, 트랜잭션을 거는 등등 서비스 로직 외의 기능을 인프로 로직이라고 부릅니다.

 

인프라 로직의 특징

  • 애플리케이션의 전 영역에서 나타날 수 있음
  • 중복코드를 만들어낼 가능성 때문에 유지보수가 힘들어짐
  • 비지니스 로직과 함께 있으면 비지니스 로직을 이해하기 어려워짐

횡단 관심사

 


 AOP (Aspect-Oriented Programming)

관점 지향 프로그래밍

  • 흩어진 Aspect 들을 모아서 모듈화 하는 기법입니다.
  • 횡단 관리에 따라서 프로그래밍 하는 것을 말합니다.
  • AOP는 다른 생각의 방향을 제시함으로 써, OOP를 보완하고 있습니다.

 

 

AOP의 용어

  • Target : 어떤 대상에 부가 기능을 부여할 것인가?
  • Advice : 어떤 부가 기능을?
  • Join point : 어디에 적용할 것인가? 메서드, 필드, 객체, 생성자 등등...
  • Point cut : 실제 advice가 적용될 지점, Spring AOP에서는 advice가 적용될 메서드를 선정

 


AOP의 구현 방법

- 컴파일
AspectJ가 사용이 됩니다.
자바 파일을 클래스 파일로 만들 때, 바이트 코드들을 조작하여, 조작된 바이트 코드들을 생성합니다.
즉, A.java 파일이 A.class로 변환될 때, A.class 파일에 메서드가 포함되어 있어야 합니다.

- 클래스 로드시
AspectJ가 사용이 됩니다.



- 프록시 패턴

 

Transactional 어노테이션

-> Spring AOP 어노테이션 중 하나입니다.

 

Interceptor

 

Filter


Spring AOP vs AspectJ