메모장

AOP (.xml 방식) 본문

Spring/개념정리

AOP (.xml 방식)

Itchild 2024. 7. 4. 11:45
728x90
반응형

 

실습은 로그로 진행해볼 예정이다.

 

1) AOP 를 하려면 AOP 라이브러리가 필요하다.

 

pom.xml에 추가

 

aspectj-version

aspectjweaver

 

maven 에서 확인  가능하다.

 

 

 

2) applicationContext.xml 에 aop 네임스페이스 추가

 

AOP 설정완료 되는 시점

사용자 *.do 를 하는 시점보다 더 먼저여야 하기 때문에

컨트롤러를 호출하기 전에 설정이 다 되어있었어야 하니까

그래서 applicationContext.xml에 추가 한다.

먼저 루트컨테이너로 동작해야 되기 때문에


세팅은 완료 하였고 실습을 진행해보자 !

 

조인트 포인트 중 after 를 사용해보자

객체화 , new 컴파일해주기

 

포인트 컷 설정

 

aspect 결합

 

결과 모습

 

 


after-throwing 실습 해보기

 

after, before, around, after-returning 등은 쉽게 로그가 잘 나오는데

after-throwing은 흐름을 잘 이해할 필요가 있어서 중점적으로 다뤄 보자 !

 

applicationContext.xml 에서

1. <bean> 으로 logAdvice3 를 객체화 시키고

2. <aop:config>

<aop:pointcut expression="execution(* com.spring.biz..*Impl.insert*(..))" id="cPointcut" />

Impl.insert로 시작하는 이름을 실행시킬 때 cPointcut이라고 할거야

3. <aop:aspect ref="logAdvice3">

<aop:after-throwing method="throwPrintLog" pointcut-ref="cPointcut"/>

</aop:aspect>

</aop:config>

예외 발생 후 throwPrintLog 출력 발생시킬거야 cPointcut 실행 될때

 

4. 글작성 페이지 들어옴

5. 조건문으로 insert 할려고 할때 에러 발생

 

6. BoardServiceImpl 에서 조건문으로 해당 아이디("qqq")가 작성하려고 하면 에러를 발생

에러발생! 출력

7. 에러가 발생했으니 after-throwing조건 때문에 logAdvice3 실행

예외 발생 메서드 실행 예외발생 출력 !

8. catch문으로 들어감 에러

여기까지 들어오면 성공 문구 출력

9. 그 후 main.do 로 들어감

 

결과 보기

 

여기서 헷갈리는 점 짚고 넘어가기 !

 

around 는 메서드 전후로 하나의 세트처럼 동작하는데

메서드에서 에러가 발생하면 일단 스탑이다.

그래서 around 전 은 했는데 왜 around 후 가 안나와요 ? 라고 착각할 수 있는데

그게 아니라 around 전 - 메서드 실행 - around 후 순서로 가야 하는데

around 전 - (에러) 메서드 실행 여기서 스탑/ after-throwing동작

after-throwing안에는 예외 발생 메서드 실행 예외발생 문장 출력

 

728x90
반응형

'Spring > 개념정리' 카테고리의 다른 글

AOP 실습2 (after-throwing,around 실습)  (0) 2024.07.04
AOP 실습 (.xml)  (0) 2024.07.04
AOP 용어 정리  (0) 2024.07.04
AOP ( 관점 지향 프로그래밍 ) 개념  (0) 2024.07.04
@RequestParam  (0) 2024.06.21