티스토리 뷰
1. create aop class
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
@Slf4j
@Aspect
@Component
public class SomeAop {
@Around("execution(* com.project.kanban.web.SomeController.*(..))")
public Object aroundLogging(ProceedingJoinPoint joinPoint) throws Throwable {
Object result = null;
try {
long start = System.currentTimeMillis();
result = joinPoint.proceed();
long end = System.currentTimeMillis();
log.info("수행 시간 : "+ (end - start));
} catch (Throwable throwable) {
log.info("exception! ");
}
return result;
}
}
2. create some aop bean
@Bean
public SomeAop someAop() {
return new SomeAop();
}
3. add EnableAspectJAutoProxy annotation
@EnableAspectJAutoProxy
public class SomeConfiguration {
...
}
- aop는 비지니스와 관련없이 원하는 시점, 대상에 특정 로직을 적용할 수 있다
- @EnableAspectJAutoProxy는 @Aspect로 애스팩트를 정의할 수 있게 해주는 @AspectJ AOP 컨테이너 인프라 빈을 등록해준다.
용어 | 설명 |
타겟 (Target) | 타깃은 부가기능을 부여할 대상이다. 핵심기능을 담은 클래스일 수도 있지만 경우에 따라서는 다른 부가기능을 제공하는 프록시 오브젝트일 수도 있다. |
어드바이스 (Advice) | 어드바이스는 타깃에게 제공할 부가기능을 담은 모률이다. 어드바이스는 오브젝트 로 정의하기도 하지만 메소드 레벨에서 정의할 수도 있다. 어드바이스는 여러 가지 종류가 있다. Methodlnterceptor처럼 메소드 호출 과정 에 전반적으로 참여히는 것도 있지만 예외가 발생했을 때만 동작하는 어드바이스처 럼 메소드 호출 과정의 일부에서만 동작하는 어드바이스도 있다. |
조인포인트 (JoinPoint) | 조인 포인트joinPoint란 어드바이스가 적용될 수 있는 위치를 말 한다. 스프링의 프록시 AOP에서 조인 포인트는 메소드의 실행 단계뿐이다. 타깃 오 브젝트가 구현한 인터페이스의 모든 메소드는 조인 포인트가 된다. |
포인트컷 (PointCut) | 포인트컷이란 어드바이스를 적용할 조인 포인트를 선별하는 작업 또는 그 기능을 정 의한 모률을 말한다. 스프링 AOP의 조인 포인트는 메소드의 실행이므로 스프령의 포인트컷은 메소드를 선정하는 기능을 갖고 있다. 그래서 포인트컷 표현식은 메소드 의 실행이라는 의미인 execution으로 시작하고 메소드의 시그니처를 비교히는 방 법을 주로 이용한다. 메소드는 클래스 안에 존재히는 것이기 때문에 메소드 선정이 란 결국 클래스를 선정하고 그 안의 메소드를 선정하는 과정을 거치게 된다. |
프록시 (Proxy) | 프록시는 클라이언트와 타깃 λ에에 투명하게 존재하면서 부가기능을 제공히는 오 브젝트다.DI를 통해 타깃 대신 클라이언트에게 주입되며 클라이언트의 메소드 호 출을 대신 받아서 타깃에 위임해주면서, 그 과정에서 부가기능을 부여한다. 스프링 은 프록시를 이용해 AOP를 지원한다. |
어드바이저 (Advisor) | 어드바이저는 포인트컷과 어드바이스를 하나씩 갖고 있는 오브젝트다. 어드바이저 는 어떤 부가기능어드바이스)을 어디에(포인트컷) 전달할 것인가를 알고 있는 AOP의 가장 기본이 되는 모률이다. 스프링은 자동 프록시 생성기가 어드바이저를 AOP 작업의 정보로 활용한다. 어드바이저는 스프링 AOP에서만 사용되는 특별한 용어이고, 일 반적인 AOP에서는 시용되지 않는다. |
애스펙트 (Aspect) | OOP의 클래스와 마찬가지로 애스펙트는 AOP의 기본 모률이다. 한 개 또는 그 이상 의 포인트컷과 어드바이스의 조합으로 만들어지며 보통 싱글톤 형태의 오브젝트로 존재한다. 따라서 클래스와 같은 모률 정의와 오브젝트와 같은 실제(인스턴스)의 구분 이 특별히 없다. 두 가지 모두 애스펙트라고 불린다. 스프링의 어드바이저는 아주 단 순한 애스펙트라고 볼 수도 있다. |
@Around("execution(* com.project.kanban.web.SomeController.*(..))")
'Programming > Spring' 카테고리의 다른 글
ControllerAdvice (1) | 2019.04.01 |
---|---|
Request Param Validate (JSR-303) (0) | 2019.03.30 |
Request Proxy (0) | 2019.03.27 |
Argument Resolver (0) | 2019.03.27 |
Interceptor (1) | 2019.03.27 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Registrar
- spring spel
- java Equals
- Spring
- Akka
- Discriminate Mapping
- Mapping
- Typesafe Config
- docker
- DI
- Criteria
- Spring Registrar
- Query DSL
- @Primary
- 복합키 Mapping
- Embeddable Mapping
- guava
- JPA
- Join Table
- Charles proxy
- Property
- java EqualsAndHashCode
- Sprint RetryTemplate
- JPA Criteria
- Spring JDBC Template
- scikit-learn
- SmartLifecycle
- RetryTemplate
- java generic
- Embedded Mapping
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함