일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- git
- AOP
- 긴문자열
- ㅗ르
- marketplace
- 이클립스
- SVN
- 캐릭터셋
- db admin
- 제어역전
- 일정계획
- 버전
- ResponseBody
- 루팅
- mybatis
- dbeaver
- 마이바티스
- 생략
- NoClassDefFoundError
- cutomobjectmapper
- Version
- 윈도우
- jsonview
- 의존성주입
- 스프링
- 설정파일
- Eclipse
- Spring
- 리눅스
- 마리아DB
- Today
- Total
프밍일기
AOP - Annotation 본문
■ Annotation을 이용한 AOP 설정
# 스프링 설정파일(applicationContext.xml)에 AOP 관련 Annotation을 사용하기 위한 엘리먼트를 추가
<context:component-scan base-package="com.fannell.site.polymorphism"></context:component-scan>
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
# Advice 클래스에 Pointcut 설정
- Pointcut 설정시 정의하는 빈 메소드는 XML에서 <aop:pointcut> 엘리먼트의 id에 해당하는 값을 설정
public class LogAdvice {
@Pointcut("execution(* com.fannell.site.polymorphism..*Impl.*(..))")
public void allPointcut() {}
}
# Advice 메소드에 실행시점을 지정하는 Annotation 정의
- 참조값으로 Pointcut 정의 메소드명을 지정
public class LogAdvice {
@Pointcut("execution(* com.fannell.site.polymorphism..*Impl.*(..))")
public void allPointcut() {}
@Before("allPointcut()")
public void printLog() {
System.out.println("[공통 로그] 비즈니스 로직 수행 전 동작");
}
}
- 실행시점 지정 나머지 Annotation(XML과 의미 동일) : @AfterReturning / @AfterThrowing / @After / @Around
# Aspect 설정
- 먼저 설정된 Pointcut 과 Advice 메소드가 결합되도록 Aspect Annotation 설정
@Aspect
public class LogAdvice {
@Pointcut("execution(* com.fannell.site.polymorphism..*Impl.*(..))")
public void allPointcut() {}
@Before("allPointcut()")
public void printLog() {
System.out.println("[공통 로그] 비즈니스 로직 수행 전 동작");
}
}
# Service 설정
- Advice 클래스가 Pointcut 필터링에 의해 실행될때 실제 객체가 존재해야 하므로 Service Annotation을 설정하여 미리 객체 생성
@Service
@Aspect
public class LogAdvice {
@Pointcut("execution(* com.fannell.site.polymorphism..*Impl.*(..))")
public void allPointcut() {}
@Before("allPointcut()")
public void printLog() {
System.out.println("[공통 로그] 비즈니스 로직 수행 전 동작");
}
}
'Spring' 카테고리의 다른 글
요청에 대한 JSON 응답 방법 (0) | 2017.08.21 |
---|---|
Spring과 MyBatis 연동 예제 (2) | 2017.04.07 |
AOP - XML (0) | 2017.03.24 |
스프링 컨테이너 <beans> 설정 유의사항 (0) | 2017.03.03 |
DI(Dependency Injection, 의존성주입) (0) | 2017.01.28 |