티스토리 뷰
AOP? 관점 지향 프로그래밍?
Aspect Oriented Programming은 문제를 바라보는 관점을 기준으로 프로그래밍하는 기법을 말한다. AOP는 문제를 해결하기 위한 핵심 관심 사항과 전체에 적용되는 공통 관심 사항을 기준으로 프로그래밍 함으로써 공통 모듈을 여러 코드에 쉽게 적용할 수 있도록 도와준다.


AOP 기법에서는 핵심 로직을 구현한 코드에서 공통 기능을 직접적으로 호출하지 않는다. 핵심 로직을 구현한 코드를 컴파일하거나, 컴파일 된 클래스를 로딩하거나, 또는 로딩한 클래스의 객체를 생성할 때 AOP가 적용되어 핵심 로직 구현 코드안에 공통 기능이 삽입된다. (공통 기능이 변경되더라도 핵심 로직을 구현한 코드를 변경할 필요가 없다.)
AOP 주요 용어
용어 | 의미 |
Joinpoint | Advice를 적용 가능한 지점을 의미한다. 메서드 호출, 필드 값 변경 등이 Joinpoint에 해당한다. |
Pointcut | Joinpoint의 부분 집합으로서 실제로 Advice가 적용되는 Joinpoint를 나타낸다. 스프링에서는 정규 표현식이나 AspectJ의 문법을 이용하여 Pointcut을 정의할 수 있다. |
Advice | 언제 공통 관심 기능을 핵심 로직에 적용할 지를 정의하고 있다. 예를 들어, '메서드를 호출하기 전'(언제)에 '트랜잭션 시작'(공통 기능) 기능을 적용한다는 것을 정의하고 있다. |
Weaving | Advice를 핵심 로직 코드에 적용하는 것을 weaving이라고 한다. |
Aspect | 여러 객체에 공통으로 적용되는 기능을 Aspect라고 한다. 트랜잭션이나 보안등이 Aspect의 좋은 예이다. |
스프링에서의 AOP
스프링으 자체적으로 프록시 기반의 AOP를 지원하고 있다. 따라서, 스프링 AOP는 메서드 호출 Joinpoint만을 지원한다. 필드 값 변경과 같은 Joinpoint를 사요하고 싶다면 AspectJ와 같이 다양한 Joinpoint를 지원하는 AOP도구를 사용해야 한다. 스프링 AOP는 자반 기반이기 때문에 AspectJ처럼 Aspect를 위한 별도의 문법을 익힐 필요없이 자바 언어만을 이용하면 된다.
스프링은 세 가지 방식으로 AOP를 구현할 수 있다.
- XML 스키마 기반의 POJO 클래스를 이용한 AOP 구현
- AspectJ에서 정의한 @Aspect 어노테이션 기반의 AOP 구현
- 스프링 API를 이용한 AOP 구현
참고자료
웹 개발자를 위한 Spring 4.0 프로그래밍(최범균/가메출판사)
'프로그래밍 > Spring' 카테고리의 다른 글
[Spring] DI(Dependency Injection)와 스프링 (0) | 2021.06.06 |
---|
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 운영체제
- context switching
- GOF
- websocket
- 인스턴스연결
- observer
- AWS
- 하이버네이트
- REST API
- REST ful
- Context Switch
- ORM
- operating syatem
- ec2
- 의존성 주입
- 멀티프로세스
- 접근제어자
- 컴퓨터공학
- 인스턴스
- Adapter
- java
- os
- full duplex
- 웹소켓
- openssh
- react
- Dependency Injection
- 메신저
- java persistence api
- Access Modifier
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함