[AOP] xml 기반

2021. 10. 7. 14:42spring

  • 횡단관심: 메소드마다 공통으로 등장하는 로깅이나 예외, 트랜잭션 처리 같은 코드들
  • 핵심관심: 사용자의 요청에 따라 실제로 수행되는 핵심 비즈니스 로직

 

1. pom.xml 에 AOP 관련 라이브러리 추가

 

2. aop 네임스페이스 추가

 

3. LogAdvice 클래스를 스프링 설정 파일에 <bean> 등록

<bean id="log" class="com.springbook.biz.common.LogAdvice"></bean>

 

4. aop 관련 설정 추가

<aop:config>

<aop:pointcut> 포인트컷을 선언한다, 유일한 id를 할당하여 애스팩트를 설정할 때 포인트컷을 참조하는 용도로 사용한다, expression 속성에 따라 필터링되는 메소드가 달라진다.

<aop:aspect> 핵심관심에 해당하는 포인트컷 메소드횡단 관심에 해당하는 어드바이스 메소드를 결합하기 위해 사용

 

 

LogAdvice 클래스를 <bean>등록. com.springbook.biz 패키지로 시작하는 클래스 중 이름이 Impl로 끝나는 클래스의 모든 메소드를 포인트컷으로 설정

 

5. 결과 확인

insertBoard() 메서드와 getBoardList() 메서드가 호출될 때 LogAdvice 클래스의 printLog() 메소드가 실행됨

 

 


get으로 시작하는 모든 메소드를 포인트컷으로 지정

 

get으로 시작하는 getBoardList() 메소드 호출되어 객체 리턴된 후 printLog() 메소드가 실행됨

 


어드바이스 동작 시점 

<aop:before>, @Before 비즈니스 메소드 실행 전에 동작

<aop:after-returning>, @AfterReturning 비즈니스 메소드가 성공적으로 리턴되면 동작

<aop:after-throwing>, @AfterThrowing 비즈니스 메소드 실행 중 예외가 발생하면 동작

<aop:after>, @After 비즈니스 메소드가 실행된 후 무조건 실행

<aop:around>, @Around 비즈니스 메소드 실행 전후에 처리할 로직을 삽입할 수 있음

 

 

 

'spring' 카테고리의 다른 글

[스프링JDBC]  (0) 2021.10.08
[AOP] 어노테이션 기반  (0) 2021.10.08
[어노테이션]  (0) 2021.10.06
[의존성주입] Setter 인젝션  (0) 2021.10.06
[의존성주입] 생성자 인젝션  (0) 2021.10.06