목록DIVE (7)
개발 기록
■1. 개요 ● 프로그래밍은 컴퓨터에게 수행할 작업을 지시하는 과정을 말하며, 여러가지 패러다임 또는 방식으로 분류할 수 있다. ① 선언형 프로그래밍: '무엇(What)'을 표현하는 방식에 중점을 둔다. 수행해야 할 작업을 선언하고, 어떻게 처리할지 명시한다.ex. SQL, Prolog (논리 프로그래밍 언어), 함수형 프로그래밍 언어② 명령형 프로그래밍: '어떻게(How)'를 표현하는 방식에 중점을 둔다. 수행해야 할 작업을 세부적인 명령어로 순차적으로 기술 ex. 프로시저기반 언어 (예: C, Pascal), 객체지향 프로그래밍 언어의 일부 (예: Java, C++), 절차지향 프로그래밍③ 객체지향 프로그래밍: 객체(object)를 기반으로 프로그램을 구성하고 작성하는 방식. ex. Java, ..
●1. 캐싱이란?캐싱(caching) 은 자주 사용되는 데이터나 계산된 결과값을 미리 저장해 두고, 이후 요청 시에 이를 재사용하는 기법이다. 이를 통해 반복적인 데이터 접근이나 계산을 피하고, 시스템의 응답 속도를 향상 시킬 수 있다. ※ 캐시의 종류와 그 예시 ① CPU 캐시: L1, L2, L3 캐시② 운영체제 캐시: 페이지 캐시, 디스크 캐시 ③ 데이터베이스 캐시: MemCached, Redisex. 자주 조회되는 상품 목록을 캐시에 저장하고, 쿼리 최적화와 DBMS 성능 튜닝을 통해 캐시 적중률을 높인다.④ API 캐시⑤ HTTP 캐시: CDN, 브라우저 캐시ex. CDN: CDN 서버는 자주 요청되는 웹 콘텐츠( CSS, JavaScript 파일 등)를 캐시하여 사용자에게 가까운 서버에서 제..
■ 1. Http Message Convert 개념 Http Message Converter 를 사용하여 JSON 및 XML과 Java 개체를 마샬링 및 마샬링 해제 한다. 즉 JSON 데이터를 HTTP 메시지 바디에서 직접 읽거나 쓸 때 사용한다. 스프링은 다음의 경우에 HTTP 메시지 컨버터를 사용한다. ☞ HTTP 요청 -> @RequestBody, HttpEntity / RequestEntity ☞ HTTP 응답 -> @ResponseBody, HttpEntity / ResponseEntity ※ 기본적인 문자는 StringHttpMessageConverter, 객체는 MappingJackson2HttpMessageConverter가 동작 (1) HttpMessageConverter method ..
■ 1 . Converter 개념 데이터나 신호, 프로그램 등을 어떤 형식에서 다른 형식으로 변환하는 것을 컨버터라고 한다. ex. 오디오 CD 를 MP3 형식의 음원 파일로 변환해주는 프로그램 물론 Spring 에서도 Converter 를 지원하고 있다. Spring Converter는 전략 인터페이스로 전략패턴으로 사용된다. Converter S는 sourceType, T는 targetType 으로 이 Convert 인터페이스는 S 에서 T 로 변환해주는 기능의 함수형 인터페이스이다. ※ 보통 바인딩한 데이터가 일치하지 않는 경우 실행에 필요한 컨트롤러 메서드의 인자 타입을 맞추기 위해 바인딩한 데이터 타입을 변경하는 용도로 사용한다. ■ 2. Converter 구조 1. ConversionServi..
환경 java 17 spring version 6.0.11 spring boot version 3.1.3 ■ 1. RequestLog ▶ AbstractMessageConvertMethodArgumentResolver Class 의 readWithMessageConvert 메서드에서 출력한다. ▶ Class 설명 - AbstractMessageConvertMethodArgumentResolver : A base class for resolving method argument values by reading from the body of a request with HttpMessageConverters. ■ 2. ResponseLog ▶ AbstractMessageConvertMethodProcessor ..
■ 1 HandlerMethodArgumentResovler 컨트롤러 메서드에서 특정 조건에 맞는 파라미터가 있을 때 요청에 들어온 값을 이용해 원하는 객체를 만들어 바인딩해준다. ☞ HandlerMethodArgumentResolver 확장(=custom) 해서 사용하는 경우 매개변수로 사용되는 인자에 대해 공통적으로 처리해야할 로직 등이 있을 경우, 중복 코드를 줄이고 공통 기능으로 추출하여 사용할 수 있다. ex. 특정 클래스나 특정 어노테이션등의 요청 파라미터를 수정해야하거나, 또는 클래스의 파라미터를 조작 혹은 공통적으로 써야하는 파라미터들을 바인딩 해줘야 하는 경우. (1) 요청 간략 흐름 스프링의 디스패처 서블릿은 컨트롤러로 요청을 전달하고 InvocableHandlerMethod 내부 로직..
환경 java 17 spring version 6.0.11 spring boot version 3.1.3 ■ 1. 요청 처리 간략한 흐름 스프링은 서블릿에 도착한 모든 요청에 대해 다음과 같은 전처리를 진행한다. 1) DispatcherServlet : 요청 URI를 받음 2) HandlerMapping : 요청을 분석하여 해당 요청 URI 에 맞는 핸들러매핑 결정 3) HandlerAdapter : HandlerMapping를 통해 모든 핸들러를 조회한 뒤 적절한 핸들러를 호출 3-1) Argumenet Resolver 처리 3-2) Message Convert 처리 3-3) Controller Method Invoke 3-4) 핸들러 적용 ■ 2. RequestMappingHandlerAdapter ..