본문 바로가기
dev/Spring

[Spring] AOP-2

by dev_Step 2022. 7. 12.

 

관점지향 프로그래밍, 횡단 관심사, cross-cutting concerns

부가 기능(advice)를 동적으로 추가해 주는기술 >> 메서드의 시작 또는 끝에 자동으로 추가

>> 부가기능

m.invoke(obj,args) >> 핵심 기능

>> 부가기능

 

>> Custom, Sales, Clert 라는 메서드에 Logging, Transaction, Security 가 모두 들어간다 고했을때 이 기능들을 분리하여 공용으로 사용할수 있도록한다. 그리고 해당 메서드에 자동으로 주입해준다.

 

========================

AOP 관련용어

 

target : advice가 추가될 객체  ( custom, sales, clert )

advice : target에 동적으로 추가될 부가 기능(코드) (Logging, transaction, security)

 

join point : advice가 추가(join)될 대상 메서드(custome, sales, clert 안의 메서드)

point cut : join point들을 정의한 패턴  ex) execution(* com.fastcampus.*.*(..))

proxy : target에 advice가 동적으로 추가되어 생성된 객체

weaving : target에 advice를 추가해서 proxy를 생성하는것  

 

 

Advice 설정은 XML과 애너테이션, 두가지 방법으로 가능

종류 애너테이션 설명
around advice @Around 메서드의 시작과 끝 부분에 추가되는 기능
before advice @Before 메서드의 시작 부분에 추가되는 기능
after advice @After 메서드의 끝 부분에 추가되는 기능
after returning @AfterReturning 예외가 발생하지 않았을 때, 실행되는 부가기능
agter throwing @AfterThrowing 예외가 발생했을때 실행되는 부가기능

 

Advice가 추가될 메서드를 지정하기 위한 패턴 @Order를 통해서 advice의 순서를 지정할 수도 있다.

 >> execution( 반환타입패키지명.클래스명.메서드명(매개변수목록))

 >> execution(*.com.fastcampus.ch3.aop.*.*(..)))

 >>                모든반환타입 // 패키지명 // * 모든클래스명 // * 모든매서드명(..) 매개변수 갯수 상관없음

 

 

 

 

=================================================================================

실습하기전에 AOP를 사용하기 위하여 lib를 추가하여 준다

 

>> Target

>> Advice

>> @Around() -- pointcut 을 지정해주는 것으로 AOP를 적용할 패턴을 적어준다.

>> ProceedingJoinPoint 에 모든 정보가 담겨있다.

 

>> 실행결과

'dev > Spring' 카테고리의 다른 글

[Spring] @Transactional-2  (0) 2022.07.12
[Spring] @Transactional-1  (0) 2022.07.12
[Spring] Transaction, Commit, Rollback  (0) 2022.07.06
[Spring] Di 따라하기 4  (0) 2022.06.22
[Spring] Di 따라하기 3  (0) 2022.06.22