프로그래밍 패러다임
절차 지향 프로그래밍 (Procedural Programming) : 문제를 해결하는데 최적화 ex) C언어
객체 지향 프로그래밍 (Object Oriented Programming, OOP) : 프로그램을 제작하는데 최적화 ex) JAVA
관점 지향 프로그래밍 (Aspect Oriented Programming, AOP) : 기능을 수행하는데 최적화 ex) Spring
핵심기능과 공통기능
- 핵심 기능 (핵심 관심(관점), 핵심 로직, 비즈니스 메서드, 서비스, 종단 처리된 기능)
ex) CRUD - 공통 기능 (공통 로직, 공통 관심(관점), 횡단 관심, 횡단 처리된 기능)
ex) 인가, 허가 확인
ex) 인증(본인 인증), 유효성 검사
ex) 로그(로깅)
ex) 보안
ex) 트랜잭션 처리 (DB)
AOP의 핵심 개념
어떤 핵심관심(PointCut)에 대해 언제 어떤 공통로직(Advice)을 호출해야하는지

↓

1. Pointcut
프로그램 실행 중 특정 지점(Join Point)을 정의
어떤 메서드 호출, 객체 생성, 예외 발생 등의 지점 지정
<PointCut 설정 코드 - applicationContext.xml>
<aop:pointcut id="bPointcut" expression="execution(* com.koreait.app.biz.board..*Impl.select*(..))"/>
메서드 부분 : 패키지 경로 (com.koreait.app.biz.board..*Impl.select*)
인풋 부분 : 개수 타입 무관하게 ((..))
아웃풋 부분 : 타입에 무관하게(특정되어 있지 않음) (*)
2. Aspect(Advisor, 어드바이저)
애스팩트, 어드바이스+포인트컷, 어드바이스(공통로직)와 포인트컷(핵심관심)의 결합
설정 그 자체를 의미하는 경우가 많음
<aop:aspect ref="la">
<aop:before method="printLog" pointcut-ref="aPointcut"/>
</aop:aspect>
동작 시점 aspect설정
- after 핵심관심 후
- after-returning 핵심관심 후 (반환하는것이 있을 때)
- after-throwing 에러발생 후
- before 핵심관심 전
- around 핵심관심 전 후
용어 정리
Advice : 횡단 처리, 공통관심
관점 지향 프로그래밍(AOP) : Advice의 메서드(공통 로직)를 제시간에 호출
Jointpoint : 조인 포인트, 포인트컷 후보(포인트컷이 될수 있는 대상)
앞으로 될수있는 모든 CRUD를 의미함
Weaving : 위빙, 핵심관심에 공통로직을 끼워넣는 과정
스프링에서는 실행시 위빙처리가 수행됨
런타임 위빙 방식 ↔ 컴파일 방식
2024.10.16
'Spring' 카테고리의 다른 글
| [Spring] 11. DAO 고도화(템플릿 패턴) (0) | 2024.10.22 |
|---|---|
| [Spring] 10-1. AOP 어노테이션 (0) | 2024.10.17 |
| [Spring] 09. Spring 비동기 처리 (0) | 2024.10.15 |
| [Spring] 08. 2-Layerd 아키텍처 구조 (0) | 2024.10.15 |
| [Spring] 07-5. 활용 코드 예시(Service) (0) | 2024.10.11 |