AOP (Aspect Oriented Programming) 란?
관점 지향 프로그래밍
핵심 비지니스 로직과 공통 모듈을 분리함으로써 개발자가 좀 더 비지니스 로직에만 집중해서 처리할 수 있는 방법을 제공 한다.
공통 모듈을 적용해서 발생하는 의존 관계의 복잡성과 코드 중복을 해소해 주는 프로그래밍 기법이다.
즉, 공통 모듈(로깅, 보안인증, 트랜잭션 등)을 별도로 작성한 후 코드밖에서 비지니스 로직 사이에 삽입하는 것이 AOP 기능을 사용해 개발한 것이라고 볼 수 있다.
AOP는 OOP(Object Oriented Programming)를 대신하는 새로운 개념이 아니라, OOP를 더욱 OOP답게 사용할 수 있도록 도와주는 개념이다.
AOP 특징
Spring은 프록시(Proxy) 기반 AOP를 지원한다.
- Spring은 타겟(target) 객체에 대한 프록시를 만들어 제공한다.
- 타겟을 감사는 프록시는 실행시간(Runtime)에 생성된다.
- 프록시는 Advice를 타겟 객체에 적용하면서 생성되는 객체이다.
프록시(Proxy)가 호출을 가로챈다(intercept)
- 프록시는 타겟 객체에 대한 호출을 가로챈 다음 Advice의 부가기능 로직을 수행하고 난 후에 타겟의 핵심기능 로직을 호출한다.(전 처리 Advice)
- 타겟의 핵심기능 로직 메소드를 호출한 후에 공통 기능(Advice)을 수행한다. (후 처리 Advice)
Spring AOP는 메소드 Join Point만 기원한다.
- Spring은 동적 프록시를 기반으로 AOP를 구현하므로 메서드 Join Point 만 지원한다.
- 핵심 기능(타겟)의 메소드가 호출되는 런타임 시점에만 공통 기능(Advice)을 적용할 수 있다.
- AspectJ 같은 고급 AOP 프레임워크를 사용하면 객체의 생성, 필드 값의 조회와 조작, static 메소드 호출 및 초기화 등의 다양한 작업에 공통기능을 적용 할 수 있다.
'쌍용강북교육센터 > 12월 + 2022년 1월' 카테고리의 다른 글
Tomcat 포트번호 변경 및 문자 인코딩(UTF-8) (0) | 2021.12.26 |
---|---|
MariaDB 설치시 유의사항 및 간단한 쿼리 (0) | 2021.12.24 |
1216_10자리의 임시 비밀번호 만들기 (0) | 2021.12.21 |
1213_highcharts 라이브러리 활용한 차트만들기 (0) | 2021.12.13 |
1210~1213_공공데이터 API 가져오기 (0) | 2021.12.13 |