공통기능 : 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
AOP를 더 자세히
https://blog.naver.com/codingspecialist/221033137309
모든 메서드에 파라매터 부분에 @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 |