티스토리 뷰

spring

AOP(Aspect Oriented Programming) 용어

paulownia 2018. 9. 27. 13:57

- Aspect :  공통 관심사에 대한 추상적인 명칭. 예를 들어 로깅이나 보안, 트랜잭션과 같은 기능 자체에 대한 용어


- Advice : 실제로 기능을 구현한 객체

* 실제 적용시키고 싶은 코드 자체, 개발자가 만드는 것은 Aspect가 아닌 클래스를 제작하고 @Advice를 적용하는 것임.

예를 들어 로그 출력 기능, 파라미터 체크 기능 자체는 Aspect라는 용어로 부르지만, 실제 구현 시에는 Advice를 제작한다고 표현.


- Join points : 공통 관심사를 적용할 수 있는 대상. Spring AOP에서는 각 객체의 메소드가 이에 해당.

* 작성된 Advice가 활약할 수 있는 위치를 의미, 예를 들어 BoardService에서 등록, 수정, 삭제만을 골라서 Advice를 적용할 수 

있는데, 이때 BoardService의 모든 메소드는 JoinPoint가 됨.


- Pointcuts : 여러 메소드 중 실제 Advice가 적용될 대상 메소드

* 여러 Join points 중에서 Advice를 적용할 대상을 선택하는 정보, 이를 통해서 특정 메소드는 Advice가 적용된 형태로 동작함.


- target : 대상 메소드를 가지는 객체

* 실제 비즈니스 로직을 수행하는 객체를 의미, 용어 그대로 Aspect를 적용해야 하는 대상 객체를 의미함


- Proxy : Advice가 적용되었을 때 만들어지는 객체

* Proxy는 일반적인 의미에서는 적접 호출하는 방식이 아니라 간접적인 호출을 하는 것을 의미함. 즉 원래 객체인 target을 호출할 때 외부에서 직접 target을 호출하는 것이 아니라, Advice가 적용된 Proxy 객체를 통해서 호출한다는 것을 의미함. 


- Introduction : target에는 없는 새로운 메소드나 인스턴스 변수를 추가하는 기능


- Weaving : Advice와 target이 결합되어서 프록시 객체를 만드는 과정








///////////////////////////////////


*  Advice의 종류


- Before Advice : target의 메소드 호출 전에 적용


- After returning : target의 메소드 호출 이후에 적용


- After throwing : target의 예외 발생 후 적용


- After : target의 메소드 호출 후 예외의 발생에 관계없이 적용


- Around : target의 메소드 호출 이전과 이후 모두 적용 (가장 광범위하게 사용됨)

메소드의 호출 자체를 제어할 수 있기 때문에 가장 강력.

'spring' 카테고리의 다른 글

파일업로드 관련 설정  (0) 2018.09.27
@Transactional 애노테이션 속성  (0) 2018.09.27
트랜잭션 설정  (0) 2018.09.26
AOP, root-context 설정  (0) 2018.09.20
AOP 라이브러리, pom.xml  (0) 2018.09.20
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
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
글 보관함