본문 바로가기

Spring Boot

AOP

공통기능 : Aspect

 

Advice 양치하다

JoinPoint 핵심로직 (모조건 매서드)

PointCut 앞이나 뒤 -> 위치를 말한다.

 

https://blog.naver.com/codingspecialist/221033137309

 

 

advice를 적용하는 방법 3가지

joinPoint에 직전, 이후, 내부에 실핼하는 어노테이션이 있다.

@Before

@After

@Around

 

aop를 적용시키는 것을 Weaving이라고 한다.

 

 

 

각 컨트롤러에서 다 쓰는데 인터셉터로 컨트롤러가 실행되기전에 낚아채면 된다.

그러면 공통적인 부분이 있어서 필터로 관리하는것도 좋지만 컨트롤러 전에만 실행을 하면 필터가 가능하지만

컨트롤러가 실행되고 나서 이 함수가 필요하면 필터로는 안된다. (필터는 전에만 처리함)

그래서 인터셉터로 AOP를 만들 예정이다. (함수 실행 전, 함수 실행 중, 함수 실행 후)

 

관점 지향 프로그램을 위해서 

AOP = 공통 관심사를 묶을 것이다.

 

 

 

기존의 우리 controller 메서드에 하지 않아요

 

proxy : 대리인

메모리 영역(컨테이너)

 

내 컨트롤러가 실행되는 것이 아니라 proxy가 실행 되는 것이 랍니다.

 

새로운 형태의 운영체제에서 봤을 때 순차적으로 실행되는 프로그램 카운터 proxy (PC : Program Counter)

 

 

 

 

https://github.com/Moonseonhyeon/SpringBoot-validate/commit/a73be79da1f51f8e23582092a2735ab8a86834e1

 

 


 

 

 

 

@Aspect으로 AOP를 등록하고 

 

@Before, @After, @Around를 사용하는데

정규 표현식으로 적용될곳을 잘 지정하면 된다.

 

컨트롤러에서

->필요한곳에 메서드의 파라미터로 @Valid 와  BindingResult bindingResult  
를 건다.

 

이때 before와 after는 간단하지만

 

around는 ProceedingJoinPoint로 핵심로직을 가져와서 사용하기 때문에 자주 사용되며 살짝 어렵다.

 

지금 올려둔 코드는 BindingResult 라는 오류를 저장해두는 객체를 사용하여서 에러가 났을때

return을 다르게 해주는 방법을 예시로 사용했다.

 

 

 

execution이 궁금하면

https://icarus8050.tistory.com/8

 

Spring AOP PointCut 표현식 정리

 지난 번에 이어서 Advice가 어떤 JoinPoint에 사용될 것인지를 지정하는 PointCut 표현식을 정리하겠습니다. 포인트컷에는 다양한 명시자를 이용할 수 있습니다. execution Advice를 적용할 메서드를 명시

icarus8050.tistory.com

AOP를 더 자세히

https://blog.naver.com/codingspecialist/221033137309

 

스프링 AOP정리

자바에는 다중 상속이 불가능하다.그래서 공통적으로 사용되는 기능을 오버라이드 하여 사용하게 되면 다른...

blog.naver.com


 

모든 메서드에 파라매터 부분에 @Valid 객체, BindingResult bindingResult

 

 

 

 

 

 

 

 

 

 

'Spring Boot' 카테고리의 다른 글

네이버 뉴스 크롤링  (0) 2020.08.14
스프링에서 구글 FCM push 메세지 구현  (0) 2020.08.13
@Valid  (0) 2020.08.11
form form 태그 delete, put요청  (0) 2020.08.11
cors정책  (0) 2020.08.11