728x90
반응형
프로그래밍을 하다보면 공통적인 기능이 많이 발생!
=> 이를 해결하기 위해 '상속'도 좋은 방법 이지만, JAVA에서는 다중상속이 불가능
∴한계 발생 ==> 이를 해결하기 위해 AOP 사용!
AOP란 핵심기능(Core Concern)과 공통기능(Cross-Cutting Concern)을 분리 시켜놓고, 공통 기능을 필요로 하는 핵심 기능들에서 사용하는 방식.
-> OOP를 적용해도 핵심기능에서 부가기능을 쉽게 분리된 모듈로 작성하기 어려운 문제점을 AOP가 해결.
AOP를 사용한다면 전체 코드에 흩어져 있는 보조 기능을 하나의 장소에 모아서 관리할 수 있다.
일단 보조기능을 만들어놓고 원할 때 설정 한 번으로 부품을 가져다 쓰듯이 사용하면 되는 것이다.
( 1 ) 주요용어
용어 | 설명 |
aspect | 구현하고자 하는 보조기능. 즉, 공통기능이다. (Advice+Pointcut) |
advice | aspect의 실제 구현체(클래스)를 의미한다. 메서드 호출을 기준으로 여러 지점에서 실행된다. 보조 기능을 구현한 코드이다. |
joinpoint | advice를 적용하는 지점을 의미한다. Advice가 적용 가능한 지점. target객체가 구현한 인터페이스의 모든 메서드는 조인포인트가 된다. |
pointcut | advice가 적용되는 대상을 지정한다. 패키지이름/클래스이름/메서드이름을 정규식으로 지정하여 사용한다.Advice가 적용 가능한 지점 들 중, 실제로 Advice가 적용 된 부분. |
target | advice가 적용되는 클래스 |
weaving | advice를 주 기능에 적용하는 것 |
( 2 )스프링에서 AOP 구현방법
AOP 구현은 Proxy를 이용한다.
예를들어, 공통기능을 핵심기능이 시작하기 전과 끝난 후에 사용하겠다고 설정했을 때,
1. 수행할 Advice를 Proxy에 요청
2. 핵심기능 수행 전에 사용 할 공통기능 수행.
3. 공통 기능 수행 후 핵심기능 쪽으로 가서 핵심 기능의 로직을 수행.
4. 핵심기능 수행 후 다시 Proxy로 가서 공통 기능을 수행.
∴공통기능과 핵심기능이 직접적으로 접속하는 것이 아닌, Proxy를 통해서 수행
*정리*
client(호출부) -> proxy -> Target
1. client가 프록시에게 요청해서 공통기능을 실행
2. 프록시가 다시 target으로 가서 핵심기능을 실행
3. 다시 공통기능을 실행하기 위해, 프록시로 와서 공통기능 실행
728x90
반응형
'⚙️Backend > Spring' 카테고리의 다른 글
[Spring] AOP(Aspect Oriented Programming) part 3 (0) | 2020.05.30 |
---|---|
[Spring] AOP(Aspect Oriented Programming) part 2 (0) | 2020.05.30 |
[Spring] DI (Dependency Injection) part 6 (0) | 2020.05.30 |
[Spring] DI (Dependency Injection) part 5 (0) | 2020.05.30 |
[Spring] DI (Dependency Injection) part 4 (0) | 2020.05.30 |