728x90
반응형
AOP란 ?
AOP(Aspect Oriented Programming)의 약자로, 여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용을 높여주는 프로그래밍 기법입니다. AOP는 핵심 기능과 공통 기능의 구현을 분리함으로써 핵심 기능을 구현한 코드의 수정 없이 공통 기능을 적용할 수 있게 만들어줍니다.
스프링 AOP 구현
스프링 AOP를 이용해서 공통 기능을 구현하고 적용하는 방법은 다음과 같습니다.
1. 공통 기능을 제공하는 Aspect를 구현한다.
2. Aspect를 어디(Point cut)에 적용할지 설정한다. 즉, Advice를 설정한다.
스프링 AOP 구현 방법 2가지
개발자는 공통 기능을 제공하는 Aspect 구현 클래스를 만들고, XMl이나 자바 설정을 이용해서 Aspect를 어디에 적용할지 설정하면 됩니다. Aspect를 구현하는 방법에는 1. XML 스키마 기반의 자바 POJO 클래스를 이용하는 방법. 2. @Aspect 애노테이션을 이용하는 방법 두 가지가 있습니다.
AOP 용어
- Joinpoint
Advice를 적용 가능한 지점을 의미하며, 메소드를 호출하는 '시점', 예외가 발생하는 '시점'과 같이 애플리케이션을 실행할 때 특정 작업이 실행되는 '시점'을 의미한다.
스프링은 프록시를 이용해서 AOP를 구현하기 때문에 필드 값 변경에 대한 Joinpoint는 불가
메소드 호출에 대한 Joinpoint 가능
- Aspect
Advice와 Pointcut을 합쳐서 하나의 Aspect라고 한다.
여러 객체에 공통으로 적용되는 기능으로, 즉 일정한 패턴을 가지는 클래스에 Advice를 적용하도록 지원할 수 있는 것을 Aspect라고 한다.
트랜잭션 기능/로그 기능/보안 기능/인증 기능 등 - Weaving
AOP에서 Joinpoint들을 Advice로 감싸는 과정을 Weaving이라고 한다.
Weaving 하는 작업을 도와주는 것이 AOP 툴이 하는 역할이다. - Advice
Joinpoint에서 실행되어야 하는 코드, 공통 관심, 횡단 관점에 해당한다.
언제, 어떤 공통 관심 기능을 핵심 로직에 적용할 지를 정의 하고 있다.
[EX] 메소드 호출 전(언제)에 트랜잭션 시작(공통 기능)기능을 적용한다는 것을 정의
- Target
실질적인 비지니스 로직을 구현하고 있는 코드, 핵심 관점에 해당한다.
Advice를 받을 대상, 즉 객체로 비지니스 로직을 수행하는 클래스일수도 있지만, 프록시 객체(Object)가 될 수도 있다. - Pointcut
Joinpoint의 부분 집합으로서 실제 Advice가 적용되는 Joinpoint를 나타낸다.
스프링에서는 정규식이나 AspectJ 문법을 이용해, Target 클래스와 Advice가 결합(Weaving)될 때 둘 사이의 결합 규칙을 정의할 수 있다.
[EX] Advice가 실행된 Target의 특정 메소드등을 지정
출처: https://ktko.tistory.com/entry/Spring-AOP-개념-설명 [KTKO 개발 블로그와 여행 일기]
728x90
반응형
'IT Diary > # Knowledge' 카테고리의 다른 글
[ Knowledge ] PaaS , SaaS , Caas 의 차이점 (0) | 2021.06.14 |
---|---|
[ Knowledge ] var, let , const의 차이 (0) | 2021.06.10 |
[ Knowledge ] API vs Library vs FrameWork (0) | 2021.05.25 |
[ Knowledge ] GET과 POST 의 차이는? (0) | 2021.05.17 |
[ Knowledge ] Web Server 와 WAS 의 차이는? (0) | 2021.05.17 |