| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 비즈니스레이어
- c:if
- @RequestMapping
- produces
- @RequestParam
- 생성자주입
- springjdbc
- @Valid
- Java
- .xml
- 서비스레이어
- @
- after-throwing
- gradle
- MVC
- spring
- AOP
- springmvc
- 스프링
- 의존주입
- application.properties
- 유효성검사
- SpringBoot
- jointpoint
- frontController
- PointCut
- 바인딩변수
- 어노테이션
- @ResponseBody
- Model
- Today
- Total
메모장
AOP 실습 (.xml) 본문
AroundAdvice 는 ProceedingJoinPoint pjp 가 인자로 필수이다.
AroundAdvice는 이런 형태가 기본적이다.

보통의 어드바이스는

인자값이 없었는데 한번 인자값을 넣어볼 예정
오늘의 실습 ! input 에 인자 넣기
// pjp 는 jp를 상속받은 객체
=> JoinPoint를 상속받은 객체 pjp는 (JoinPoint와Signature메서드를 이용할 수 있음)
=>ProceedingJoinPoint는 Around advice(@Around)에서만 지원되는 JoinPoint 이다.

// 다른 advice 들은 필수가 아님
// 나와 결합된 비즈니스 메서드의 정보를 받고 싶을때 jp를 사용한다.

jp.getSignature() : output 자체가 시그니처
메서드 시그니처를 말하는것
String methodName = jp.getSignature().getName();
// 비즈니스 메서드의 이름
// 현재 해당 어드바이스와 결합된 비즈니스 메서드
syso("횡단관심 : "+ methodName + "의 반환 이후의 로그");
내가 현재 결합되어있는 메서드 이름을 어드바이스측에서 알 수 있다.
여기서 사용된 개념
바인드 변수 Object returnObj

나와 결합될 비즈니스 메서드의 아웃풋이 무엇인지 확실치 않아서
자바의 최상위인 Object returnObj 를 사용.
잠깐 알고가기 , 둘의 차이점 obj vs ~Obj
Obj -> 임시변수 느낌 잠깐 하려고 붙는 이름, 단어 (일회용 느낌)
~Obj -> 현재 이 로직에서 활용이 되고 있으며 앞으로도 두번 이상 사용될 예정이라
스프링 컨테이너가 누구였든 Object 라는 큰 박스안에 넣어주고 있기 때문에
자바의 다형성을 이용하고자 하는 누구라면 쓰는 기법 !
ex) 챔피언이라는 박스 안에 티모 , 가렌
ex) 포켓몬이라는 박스 안에 파이리 , 꼬부기
ex) 포켓몬아~ 공격해 ! 해서 전기볼트가 나감 피카츄라서, 물대포가 나감 꼬부기 라서
실제 주체가 동작하는게 바인딩이다.
returnObj 큰 객체 안에 vo 가 다 들어가기 때문에 해당하는 VO에 맞춰 실행해준다.
이걸 가능하게 하는게 OOP 의 다형성 이다.
returnObj -> 비즈니스메서드의 output 이 반환 된다.

// returnObj가 관리자라면, 로그에 [관리자 입장] 이라고 출력하고 싶다 !
- 혹시 returnObj 가 멤버VO 객체로 생성되었니?
다운캐스팅 MemberVO로 다운캐스팅
된다면 혹시 returnObj가 역할이 "ADMIN" 이니?
만약에 관리자가 아니었다면 사용자 입장
아니면 데이터 열람

바인딩 변수가 있다는 사실을 컨테이너가 알아야함
returning ="returnObj"
나 바인딩 변수 있다~ 이름이 returnObj 야
다음 글엔 <aop:after-throwing> 실습에 대해 알아보자
'Spring > 개념정리' 카테고리의 다른 글
| AOP 로그 실습 (@ 어노테이션 으로 변경) (0) | 2024.07.04 |
|---|---|
| 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 |