[Chapter 06] AOP, Interceptor, Filter #47
Unanswered
BvrPark
asked this question in
Chapter 06. Building a Web Application Server
Replies: 2 comments
-
책외의 질문에 대해 먼저 생각을 공유드린다면 |
Beta Was this translation helpful? Give feedback.
0 replies
-
https://dev-monkey-dugi.tistory.com/126 글 한번 읽어보시는거 추천드립니다. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
저는 AOP가 클래스 내에서 반복되는 부분을 메서드 처리해서 사용하듯이
프로그램 로직에서 반복되는 부분을 클래스로 하나의 로직으로 만들어서 사용한다? 이렇게 알고 있었고
Interceptor는 뭔가 예외처리나 어떤 요청이 들어왔을 때, 중간에 가로채서 어떤 동작을 실행하는 것?이라고 알고 있었습니다.
그래서 Interceptor가 어떤 비지니스 로직이나 다른 클래스 같은 곳에서도 특정한 예외처리나 특정한 로직처리들을 따로 분리해서 처리하는 것도
Interceptor라고 생각했고 어떻게 보면 특정한 요청들이 들어왔을 때, 공통적으로 수행하는 작업같아서 AOP의 일종 같다고 생각했습니다.
그리고 Filter는 Dispatcher Servlet에서 요청을 받아들이기 전에 모든 요청을 보고 원하는 것을 처리하는 것이라고 알고 있습니다.
그런데 책에서 Interceptor 관련 부분들을 읽다보니 Interceptor는 주로 HTTP 요청들을 Dispatcher Servlet에서 Controller로 들어오기 전에 중간에 가로채서 수행한다고 되어있던데 그러면 제가 조금 헷갈리는게 있습니다.
1.Request -> Filter <-> Dispatcher Servlet <-> Interceptor <-> Controller <-> AOP
2.Request -> Filter <-> Dispatcher Servlet <-> Interceptor <-> AOP <-> Controller
Q1. 1번처럼 작동하는게 맞는건지 2번처럼 작동하는게 맞는건지 그게 궁금합니다.
Q2. 그렇다면 Interceptor라는 개념이 HTTP 요청 외에 다른 곳에는 안쓰이는 건지, 그러면 비지니스 로직에서 공통예외 처리나 이런 것들은 모조리 다 AOP라는 개념으로 들어가는지 그것도 궁금합니다.
책 외의 질문
최근에 프로젝트를 만들다가 고민에 빠진 것이 있습니다.
Service 클래스
A와 B가 있다고 가정을 하고A 클래스에서 B 클래스의 메서드 b에 있는 로직을 사용하고 싶었습니다.
그래서 A 클래스에서 B클래스를 @Autowired했고 순환참조도 신경을 써서 사용을 했습니다. 그런데 여기서 의문점이 든 것이 있습니다.
스프링빈은 기본이 singleton으로 아는데 그러면 만약에
A서비스
를 사용하려는 사용자가 밀려있고그 와중에
B서비스
만을 사용하려는 사용자가 있다고 가정을 하면(요청ex : AAA...AABAA)
A서비스
를 사용할때,B서비스
도 호출이 되는데 스프링 빈은 singleton이니까A서비스
의 요청이 다 끝날때까지B서비스
만 사용하려는 사용자는 기다려야 될 것으로 생각이 들었습니다.Q3. 제가 지금 생각하는 것처럼 A 서비스에서 B 서비스를 사용하는 경우에 이런 문제가 실제로 일어나는지가 궁금합니다.
Q4. 3번의 문제가 맞다면 혹시 현업에서 다른 분들은 이럴 때 어떻게 하시는지? 아니면 다른 서비스단을 사용하지 않고 다르게 하시는 방법이 있는지 그것이 궁금합니다!
Beta Was this translation helpful? Give feedback.
All reactions