Spring - @AspectJ
2020. 8. 31. 15:46ㆍJava/Spring
반응형
@AspectJ 어노테이션을 활용해 Advisor 역할을 할 Bean을 설정할 수 있다.
1. beans.xml 세팅
beans.xml에 아래와 같이 context 태그를 이용해 빈즈 객체와 advisor로 사용할 component들을 스캔한다.
<context:component-scan base-package="cookingcoding.beans"/>
<context:component-scan base-package="cookingcoding.advisor"/>
그 후 아래 태그를 이용해 AOP의 자동 aspectj 기능을 활성화한다.
<aop:aspectj-autoproxy/>
2. Aspect 클래스 등록
AdvisorClass를 aspect 클래스로 등록시키기 위해서 @Aspect 어노테이션을 등록한다.
@Aspect
@Component
public class AdvisorClass {
@Before("execution(* method1())")
public void beforemethod() {
System.out.println("before!!");
}
@After("execution(* method1())")
public void Aftermethod() {
System.out.println("After!!");
}
@Around("execution(* method1())")
public Object aroundmethod(ProceedingJoinPoint pjp) throws Throwable{
System.out.println("around before");
Object a = pjp.proceed();
System.out.println("aroundafter");
return a;
}
@AfterReturning("execution(* method1())")
public void returning(){
System.out.println("returning");
}
@AfterThrowing("execution(* method1())")
public void thro() {
System.out.println("Throwing");
}
}
@Aspect가 등록된 컴포넌트클래스는 AOP 관리기술인
@Before,@After,@Around,@AfterReturning,@AfterThrowing등을 사용 가능하고, 기능은 beans.xml에서 직접 선언하여 사용했던 태그들과 같다.
▪ @Before : 관심사 동작 이전에 호출된다.
▪ @After : 관심사 동작 이후에 호출된다.
▪ @Around : 관심사 동작 이전 이후를 의미한다.
▪ @AfterReturning : 예외 없이 정상적으로 종료되었을 때 호출된다.
▪ @AfterThrowing : 예외가 발생하여 종료되었을 때 호출된다.
3. Java BeanConfigClass에서 설정하기
beans.xml이 아닌 자바 파일에서도 설정이 가능한데, 컴포넌트를 스캔하는 클래스에 @EnableAspectJAutoProxy 어노테이션을 주는 것이다.
@Configuration
@ComponentScan(basePackages = {"cookingcoding.beans","cookingcoding.advisor"})
@EnableAspectJAutoProxy
public class BeanConfigClass {
}
위 코드는 컴포너트를 스캔하고, 자동으로 @Aspect 어노테이션을 찾아서 AOP를 적용시킨다.
반응형
'Java > Spring' 카테고리의 다른 글
Spring - mybatis (0) | 2020.09.01 |
---|---|
Spring - JDBC(mysql) (0) | 2020.09.01 |
Spring - execution 사용법 (0) | 2020.08.30 |
Spring - AOP (0) | 2020.08.29 |
Spring - Component 자동주입 (0) | 2020.08.27 |