막 엄청 중요한 스킬은 아닌데
이걸 몰라?... 싶은 스킬
모르면 코드가 좀 더럽게 짜이는 느낌?
AOP: Accept Oriented Programming
관점 지향 프로그래밍 (설계 패턴중 하나)
Service, Dao등에서 중복되는 코드부분 (log 처리, commit, rollback 등)
비지니스 로직에서 처리하지않는 이런 공통 영역 코드를 실행 할 수 있는 구성이 가능 하도록 도와주는 기술
-> 소스코드의 중복을 줄이고, 비지니스 로직과 공통 코드를 분리하여 구성 가능
Spring AOP 동작구조
AOP공부하다보면 어려움 -> 본인들의 명칭을 막 붙여놓음
Proxy: 중계자
Proxy서버는 보통 해킹할때 많이쓰는 그런건데..
자신의 네트워크가 아니라 남의 네트워크를 사서 사용하는 네트워크 용어에 가까운데
Proxy 패턴은 디자인 패턴중 하나로 위 그림에서 말하는 Proxy는 중계자라는 의미가 더강함
object로 바로 넘겨줄때도 있고
Advice를 거쳐서 넘겨줄때도 있음
(가장 강력한 Servlet Filter와 비슷한 매커니즘이지만 살짝 다름
Spring에서는 Filter를 잘 쓰지않고 보통 AOP나 인터셉터를 사용함)
스프링에서 사용하는 흐름제어 3가지 => [Spring filter, AOP, Intecepter]
Filter는 서블릿에서 가장강력했지만 스프링에서는 잘쓰지않고 보통 쓸일이 있으면
스프링 안에 있는 Intercepter를 사용함
AOP중 우리가 만들어야할것은 Advice와 Target Object
Spring AOP 핵심용어
Aspect
Advice와 어드바이스를 어디 적용할지 결정하는 Pointcut을 합친개념
JoinPoint: 메소드를 호출할 시점이 뭔데~ 를 정하는 시점
Advice: Join Point에 삽입되어 동작될 코드
Before Advice
Around Advice
After Advice
After Returning Advice: 정상종료시 실행
After Throwing Advice: 예외발생했을때 실행 (Ruturing과 Throwing -> 에러가 발생했느냐 안했느냐)
Spring AOP 구조 정리
Weaving은 걸리적거리는 부가기능들을 언제 적용시킬것인가~
메소드 호출하면 Proxy에서 먼저 까보고 처리할께있으면 Advice를 거쳐서 들어감
처리할게있으면 인터셉트해서 Advice를거쳐서 Target Object를 감
뒤에있는 Advice 는 before,after, around를 적용하기 위해 있음
pointcut : 어노테이션)
Advice 작성하기
(코드블럭)
테스트 설정
스프링 lecagy 프로젝트로 03_SpringAOP 제작
그리고 web.xml 에 인코딩 필터 추가
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
'Spring Boot' 카테고리의 다른 글
Spring Boot 환경설정 (0) | 2024.02.20 |
---|