Study
-
[Spring] 스프링 핵심 원리 - ThreadLocalStudy/Spring 2025. 4. 19. 23:15
일반 변수와 ThreadLocal 변수 비교1) 일반 변수 필드여러 스레드가 같은 인스턴스의 필드(멤버 변수)에 접근하면 처음 스레드가 보관한 데이터가 사라질 수 있음 예시)thread-A가 userA라는 값을 저장하고, thread-B가 userB라는 값을 저장하면 직전에 thread-A가 저장한 userA 값은 덮어씌워짐 2) ThreadLocal로 선언된 필드ThreadLocal은 해당 스레드만 접근할 수 있는 특별한 저장소를 말함즉, ThreadLocal을 사용하면 각 스레드마다 별도의 내부 저장소를 제공함. 따라서 같은 인스턴스의 스레드 로컬 필드에 접근해도 문제 없음자바는 언어 차원에서 스레드 로컬을 지원하기 위한 java.lang.ThreadLocal 클래스를 제공함 예시)thread-A가 ..
-
[Spring] Spring MVC - 필터, 인터셉터Study/Spring 2025. 4. 19. 21:26
들어가기 전,Q. 필터와 인터셉터는 언제 사용하면 좋을까?공통 관심사는 스프링의 AOP로도 해결할 수 있지만, 웹과 관련된 공통 관심사는 서블릿 필터나 스프링 인터셉터를 사용하는 것이 좋음웹과 관련된 공통 관심사를 처리할 때는 HTTP 헤더나 URL 정보들이 필요한데, 서블릿 필터나 스프링 인터셉터는 HttpServletRequest를 제공함 Q. 둘 중 어떤 것을 사용할까?인터셉터는 스프링 MVC 구조에 특화된 필터 기능을 제공한다고 이해하면 됨스프링 MVC를 사용하고, 특별히 필터를 꼭 사용해야 하는 상황이 아니라면 인터셉터를 사용하는 것이 더 편리함 서블릿 필터필터 흐름HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러필터를 적용하면 필터가 호출된 후에 서블릿이 호출됨필터는 특정 URL..
-
[Spring] Spring MVC - 구조 이해 및 기본 기능Study/Spring 2025. 4. 19. 15:44
프론트 컨트롤러프론트 컨트롤러 패턴 특징프론트 컨트롤러를 담당하는 서블릿 하나로 클라이언트의 모든 요청을 받음요청이 들어오는 입구를 하나로 만들어 공통 처리 가능함프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출함프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨HttpServletRequest, HttpServletResponse 등 서블릿과 관련된 코드를 사용하지 않아도 된다는 의미프론트 컨트롤러에서 호출하기 때문Spring Web MVC와 프론트 컨트롤러스프링 웹 MVC의 핵심도 바로 ‘프론트 컨트롤러’스프링 웹 MVC의 ‘DispatcherServlet’이 프론트 컨트롤러 역할을 수행하는 것 스프링 MVC 전체 구조1) Dispatcher Servlet 구조 살펴보기`org..
-
[Spring] Spring MVC - 서블릿Study/Spring 2025. 4. 17. 20:56
서블릿HTTP 요청을 수신하고 데이터를 응답하는 역할 수행 (HTTP 요청/응답을 위한 처리를 대신 수행하는 것)특징urlPatterns의 URL이 호출되면 서블릿 코드가 실행HttpServletRequest, HttpServletResponse 생성 HTTP 요청, 응답 흐름HTTP 요청 시 WAS는 Request와 Response 객체를 새로 만들어서 서블릿 컨테이너 내 서블릿 객체를 호출함개발자는 Request 객체에서 HTTP 요청 정보를 꺼내서 사용개발자는 Response 객체에 HTTP 응답 정보를 편리하게 입력WAS는 Response 객체에 담겨있는 내용으로 HTTP 응답 정보를 생성함 서블릿 컨테이너서블릿 컨테이너 덕분에 서블릿 객체 생성 및 관리를 개발자가 수행하지 않아도 됨Tomcat ..