[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 |