AOP에 대하여

- 인프라 로직 (모든 서비스에 로그를 찍는 함수를 만들어라 (서비스 메서드:1203342개))

  • 애플리케이션의 전 전영역에서 나타날 수 있음
  • 중복코드를 만들어낼 가능성 때문에 유지보수가 힘들어짐
  • 비즈니스 로직과 함께 있으면 비즈니스 로직을 이해하기 어려워짐(코드가 복잡해짐)
AOP 설명
* 로그인 기능, 글 작성 기능, 글 삭제 기능

횡단 관심사 (cores-cutting concern)
중복이 되는 인프라 로직은 횡단으로 나타난다. (중복코드)

- Aspect-Oriented Programming (OOP랑 대치되는 개념 아니라 보완하는 개념임) 

AOP 시작하기
   
AOP를 사용하기 위해서는 다음과 같은 Annotation들을 알아야 한다.
참고 https://programforlife.tistory.com/107

 

   
- UselessAdvice
@Aspect 어노테이션
@Component 어노테이션

- stopWatch 기능(중복코드 발생여지가 있는 인프라 로직)
@Around("excution(*org.aaa.aaa.AuthServiceImple)
@Around : advice
execution.. : point cut : 어떤 메서드에 적용 할 것인지.?


중간에 프록시를 이용해서 갈아끼우는 기념?

 

 

 

Spring AOP 사용(supported by @AspectJ)
  • Target
    • 어떤 대상에 부가 기능을 부여할 것인가?
  • Advice
    • 어떤 부가 기능? Before, AfterReturng, AfterThrowing, After, Around
  • Join Point
    • 어디에 적용할 것인가? 메서드, 필드, 객체, 생성자 등
  • Point cut
    • 실제 advice가 적용될 지점, Spring AOP에서는 advice가 적용될 메서드를 선정
AOP의 구현 방법 (적용 시점)
  • 컴파일 시
    • J.java - > J.class
  • 클래스 로드 시
    • J.class
  • 프록시 패턴
    • 패턴 방법(Ioc, DI)이용
Spring AOP와 AspectJ
   
 

참고

https://calgaryhomeless.tistory.com/6

 

(개념) Spring AOP를 구현하는 Proxy Pattern

 스프링이 제공해주는 제일 큰 기능으로는 IoC, AOP, PSA가 있다. 이중 AOP는 Aspect Oriented Programming의 줄임말이라고 하는데 강의를 들어보니 Aspect가 핵심이다. Aspect는 관점이라는 뜻이 있는데 나는..

calgaryhomeless.tistory.com

https://www.youtube.com/watch?v=Hm0w_9ngDpM 

 

'Spring > [인프런] Spring FrameWork' 카테고리의 다른 글

DI(Dependency injection)  (0) 2022.01.24
Spring 커넥션풀(c3p0)  (0) 2022.01.09
Spring JDBC 연동 & JDBC Template  (0) 2022.01.08
리다이렉트, 인터셉트  (0) 2022.01.06
세션, 쿠키  (0) 2022.01.03

+ Recent posts