[AOP]

:: 문제를 바라보는 관점을 기준으로 프로그래밍 하는 기법

:: 공통 관심사항과 핵심관심사항안에 삽입한다는 개념으로 횡단 관점의 분리 개념이다. 


@ 공통관심사항(cross-cutting concern)

:: 공통기능으로 어플리케이션 전반적으로 필요로 하는 기능

@ 핵싱관심사항(core concern)

:: 핵심로직, 핵심 비지니스 로직

:: 공통으로 사용하지 않고 단일로 사용하는 기능

@횡단관점의 분리

:: 공통 기능들을 하나의 클래스로 모으고 모듈로부터 분리함으로 재사용성과 보수성을 높이는 방법

:: 공통 기능을 호출하는 코드까지는 분리할 수 없기에 분리한 공통기능을 이용하기 위한 코드가 횡단으로 산재

:: 핵심로직에서 직접적으로 공통기능을 호출하지 않음

:: 분리한 공통기능의 호출 까지도 관점으로 다룸.

:: 횡단관점까지 분리함으로 각 모듈로부터 관점에 관한 코드를 완전히 제거하는 것이 목표



[AOP 주요 용어]


☞ Advice 

:: 언제 공통 관심 기능을 핵심 로직에 적용할 지 정의

:: Ex. 메서드를 호출하기전(언제)에 Transaction을 시작한다(공통기능)기능을 적용하는것을 정의

☞ JoinPoint 

:: Advice를 적용 가능한 지점을 의미

:: 메서드 호출, 필드값 변경등이 포함됨


☞Pointcut

:: JoinPoint의 부분집합

:: 실제로 Advice가 적용되는 JoinPoint를 나타냄

:: Spring에서는 정규표현식이나 AspectJ의 문법을 이용하여 정의할 수 있다.


☞Weaving 

:: Advice(공통코드)를 핵심 로직 Code에 적용하는 것을 말함


☞Aspect

:: 여러 객체에 공통으로 적용되는 공통관심사항을 의미함

:: Transaction이나 Security등이 좋은 예


☞Target object

:: 하나 또는 그 이상의 Aspect에 의해 Advice되는 객체, 즉 핵심로직을 구현하는 클래스를 의미

:: Spring에서는 런타임 프록시를 사용해 구현


[ AOP의 세 가지 구현 방법]


☞ XML스키마 확장을 이용한 POJO클래스 기반


☞ @Aspect어노테이션 기반 구현방식


ºAspect 어노테이션

-@Aspect

-@Pointcut

-@Around

-@Before

-@After

-@AfterReturning

-@AfterThrowing




☞스프링 API를 이용한 AOP구현(거의 잘 안씀)




'프로그래밍 > Java' 카테고리의 다른 글

Spring MVC  (0) 2018.09.11
Spring 데이터 베이스 연동 지원  (0) 2018.09.11
Spring정리  (0) 2018.09.05
Mybatis정리  (0) 2018.09.05
제어문  (0) 2018.07.15

+ Recent posts