메모장

AOP 실습 (.xml) 본문

Spring/개념정리

AOP 실습 (.xml)

Itchild 2024. 7. 4. 13:36
728x90
반응형

 

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> 실습에 대해 알아보자

 

728x90
반응형

'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