관점지향 프로그래밍, 횡단 관심사, 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 |