| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Java
- @Valid
- .xml
- jointpoint
- 비즈니스레이어
- gradle
- @
- spring
- 의존주입
- 스프링
- 유효성검사
- AOP
- MVC
- application.properties
- springmvc
- SpringBoot
- produces
- springjdbc
- PointCut
- @RequestMapping
- 바인딩변수
- Model
- 서비스레이어
- after-throwing
- c:if
- @RequestParam
- 생성자주입
- @ResponseBody
- 어노테이션
- frontController
- Today
- Total
메모장
AOP (.xml 방식) 본문
실습은 로그로 진행해볼 예정이다.
1) AOP 를 하려면 AOP 라이브러리가 필요하다.


aspectj-version
aspectjweaver

2) applicationContext.xml 에 aop 네임스페이스 추가
AOP 설정완료 되는 시점이
사용자 *.do 를 하는 시점보다 더 먼저여야 하기 때문에
컨트롤러를 호출하기 전에 설정이 다 되어있었어야 하니까
그래서 applicationContext.xml에 추가 한다.
먼저 루트컨테이너로 동작해야 되기 때문에


세팅은 완료 하였고 실습을 진행해보자 !
조인트 포인트 중 after 를 사용해보자




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안에는 예외 발생 메서드 실행 예외발생 문장 출력
'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 |