일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- equlas
- github action
- 동등성
- 우아한테크코스
- Payload
- CMC
- Hackathon
- 딕셔너리
- CICD
- 해커톤
- 이코테
- ssh-action
- loop
- 나동빈
- JWT
- HashCode
- 이것이취업을위한코딩테스트다
- 동일성
- 왕실의나이트
- 너디너리
- 컴공선배
- 우테코
- remove
- nestJS
- object
- Signature
- makeus
- 동빈북
- forloop
- 라이징캠프
- Today
- Total
목록공부기록/Spring (5)
iamjooon2님의 블로그

집사의고민 프로젝트의 기능 개발은 완료되었고, 이제 리팩터링 및 성능 개선을 고민하고 있는 상황입니다. 그러던 중, 쉽게 바뀌지 않는 API를 캐싱하는 것은 어떨까라는 생각이 들었는데요. 적용 과정과 선택한 기술에 대한 근거를 정리하고자 합니다. 그 전에, 캐시는 무엇일까요 공대생의 친구, 위키백과에게 물어봤습니다 캐시(cache, 문화어: 캐쉬, 고속완충기, 고속완충기억기)는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간없이 더 빠른 속도로 데이터에 접근할 수 있다. 라고 합니다. 제..

저번 포스트에서 HandlerInterceptor를 적용한 것까지 포스팅했습니다. 컨트롤러에서의 반복되는 인증 작업은 줄일 수 있었지만, 여전히 토큰에서 수출한 사용자 정보가 필요한 상황이었습니다 이는 ArgumentResolver와 커스텀 어노테이션을 이용하여 해결할 수 있었습니다! 먼저, 커스텀 어노테이션부터 한 번 확인해보곘습니다 @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) public @interface AuthPrincipal { } AuthPrincipl이라는 임의의 어노테이션을 만들어주었습니다. @Target(ElementType.PARAMETER)를 통해 메서드의 파라미터에서 사용할 수 있도록 적용해주었고 @Rete..

우아한테크코스 장바구니 미션 수행 중, 요구사항으로 인증 기능 구현이 있었습니다. 사용자 정보는 요청 Header의 Authorization 필드를 사용해 인증 처리를 하여 얻습니다. 인증 방식은 Basic 인증을 사용합니다. 예시) Authorization: Basic ZW1haWxAZW1haWwuY29tOnBhc3N3b3Jk type: Basic credentials : email:password를 base64로 인코딩한 문자열 ex) email@email.com:password -> ZW1haWxAZW1haWwuY29tOnBhc3N3b3Jk 처음 구현한 코드부터 같이 보겠습니다. 컨트롤러 부분은 다음과 같습니다. @RestController public CartController { // 필드 및 ..

Spring MVC 구조를 공부하고 있었다. 위와 같은 구조로, Dispatcher Servlet이란 놈이 중심이 되어 일을 하고 있었다. 열정맨 디스패쳐 서블렛... 이놈은 대체 무슨 놈일지 궁금해서 찾아본 것을 정리해보려 한다. 1. Servlet은 뭘까? Dispatcher Servlet에 대해 알기 전에, Servlet부터 알아보자. Dispathcer는 '보내다, 파견하다'라는 뜻을 가지고 있다. 그럼 Servlet은 뭘까? 자바 서블릿은, 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말한다. 흔히 서블릿이라고 부른다. 출처: 위키백과 본명은 Java Servelt이고, 자바에서 HTTP 기술을 사용하기 위해 쓰는 놈이다 2. Dispatcher Servlet, ..

웹 자동차 경주 미션을 하며, @RestController 어노테이션만 붙이면 스프링이 알아서 해당하는 요청 경로를 찾아주는게 너무 신기했다. 그래서 이 웹 MVC의 구조를 찾아보며 정리해보려 한다. 클라이언트로부터 요청이 들어오면(1번), 디스패쳐 서블렛은 그 요청을 처리하기 위한 컨트롤러 객체를 검색한다 이때 디스패쳐 서블렛은 직접 컨트롤러를 검색하지 않고 핸들러 매핑이라는 빈 객체에 컨트롤러 검색을 요청한다.(2번 과정) 핸들러매핑은 클라이언트의 요청 경로를 이용해서 이를 처리할 컨트롤러 빈 객체를 디스패쳐 서블렛에 전달한다.(3번 과정) 예를 들어 웹 요청 경로가 '/plays'라면 등록된 컨트롤러 빈에서 '/plays' 요청 경로를 처리할 컨트롤러를 리턴한다. 이때, 컨트롤러 객체를 디스패쳐 서..