본문 바로가기
springboot 수업일지

26일차 인터셉터 - AOP(공통관심사 분리)

by wannabe 2021. 7. 26.

1.톰켓은 필터를 가지고 있음

 필터는 입구에서 동작

 

2.스프링은 ? 리플랙션을 통한 AOP

 함수의 전후에서 동작!

 AOP는 공통관심사를 따로 분리해서 관리! 

 

3.인터셉터? 필터+리플렉션을 통한 AOP

 

4.시큐리티? 인터셉터 + 보안 (현업에서 사용)

 

1. 필터 : 스프링이 아니라 톰켓이 들고있음

/post/1

/post관련 주소가 들어오면 필터에서 걸러내게 설정할수도 있다

세션이 있으면 들어가게 해주고..등등 필터역할(1차관문) - 공통적인 전처리(들어와서 수행되기 전에!!)

중국에서 오는 아이피 막고 싶으면?? 필터에서 막게 설정한다

 

필터통과해서 들어오면? 디스패쳐를 만난다. 

2. 디스패쳐

 

IoC컨테이너에 PostController,UserController 등을 들고있다

/post를 들고있는게 누군지 찾는다!! post인지 user인지

아 PostController에 있네! 그래서 컨트롤러(C)에서 함수를 때려준다 

컨트롤러에서 함수를 때려주기 직전에 aop처리해줄수 있다! 그리고 직전에 세션 확인도하고 

컨트롤러 후처리도 가능하다. 전후처리 가능!!(필터는 전처리만 가능)

 

.class파일은 번역이 된 파일이다 (수정 불가능)

.java파일은 수정가능

 

reflection 

껍데기함수를 하나 만들어놓고(어노테이션만 붙여놓는다던지...)

사용자가 C를 요청하면? 동적으로 C를 만들어낸다

D를 요청하면? D를 만들어낸다

미리 구체적으로 C,D,E 등,,,을 만들어놓지 않는 것

 

유효성 검사(validation check)

예를들어, username, password를 검사하는 도구를 만들어놓고 팔아먹었다

근데 사용자가 title,content검사 도구가 필요하다 요청하면? 필요할때마다 하나씩 다 만들어줘야한다

=>요청을 뭘하든 클래스를 분석해서 처리하는 기법 사용!!!!!(reflection)

 

reflection :

실시간으로 클래스안에 있는 함수,변수,어노테이션을 보고 분석하는 기법!! 컴파일시에 분석x, 요청시에 분석!!

 

 

컨트롤러에서 때려줄 함수위에 @sessioncheck라고 적으면??? 함수 때려주기전에 세션체크 가능!!!!!!

필터랑 reflection을 연결할수도 있다!!!! 

 

 

aop를 기반으로 만들어진 라이브러리!!!!!! interceptor=> 함수 직전,직후 관리해줌

우리는 필터 안쓰고 인터셉터로!!! 

 

interceptor 실습!!!!! 

폴더 하나 생성한다

 

import하려면???? 

alt+shift+o

 

주소설계의 중요성!!!!!!!!!!!!!!!!

 

과제!!!!!!!!

게시글 보기 페이지는 exclude시키기!!! 

단, delete랑 구분해줘야함