Spring🌱 8

[spring boot] DTO HttpMessageConversionException 에러 해결 Jackson (역직렬화 문제)

2024-11-20 16:13:44.543 ERROR 17788 --- [nio-8080-exec-2] d.v.m.c.filter.JwtTokenFilter : Error occurs while getting header. header is null or invalid2024-11-20 16:13:44.600 ERROR 17788 --- [nio-8080-exec-2] d.v.m.exception.GlobalControllerAdvice : Error occurs org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class dev.vinyeee.mysns.controll..

JWT 토큰 분석 extractClaim() 함수로 payload 추출

spring 에서 로그인 로직을 JWT 토큰을 이용한 방식으로 구현중인데 토큰 필터 부분에서 유효성 검사 후 JWT 에서 사용자 정보를 추출 하는 로직이 잘 이해가 되지 않아서 정리해보려 한다.   JWT 토큰의 개념부터 상세히 알고 싶다면 해당 글을 참조  쿠키 vs 세션 vs JWT 토큰 방식의 개념에 대해 알아보자SNS 서비스의 회원가입과 로그인 기능을 구현하는 중  Auth 에 대해서 알게되었다 . 서버에서 사용자를 어떻게 기억하고 인증할까?  서버가 쿠키에 사용자 정보를 저장해두고 이를 세션으로 유vinyee.tistory.com@Slf4jpublic class JwtTokenFilter extends OncePerRequestFilter { // 이 필터는 모든 HTTP 요청마다 한 번씩 실행..

Spring🌱 2024.11.18

쿠키 vs 세션 vs JWT 토큰 방식의 개념에 대해 알아보자

SNS 서비스의 회원가입과 로그인 기능을 구현하는 중  Auth 에 대해서 알게되었다 . 서버에서 사용자를 어떻게 기억하고 인증할까?  서버가 쿠키에 사용자 정보를 저장해두고 이를 세션으로 유지한다는 식의 대략적인 정보는 이전에 들어본 적이 있었지만제대로 알아본 적은 없는 것 같기에 이번기회에 확실히 정리해 두고 넘어가보려 한다    쿠키 🍪 vs 토큰 ?쿠키를 이용해서 서버는 사용자에 관한 것을 기억하기 위해 브라우저에 데이터를 담아둘 수 있다.   사이트에 방문하게 되면 브라우저는 서버에 요청을 보내게 되고 서버는 이 요청에 대한 응답으로 클라이언트가 요청한 모든 데이터와 페이지 정보를 담아 주게된다. (흔히 아는 요청 - 응답 방식 ) 그리고 이때 반환하게 되는 응답에 쿠키가 존재할 수 있다.  ..

Spring🌱 2024.11.18

[spring boot] 비동기 프로그래밍이란?

비동기 프로그래밍이란  - async 한 통신 (작업이 다 끝나기 전까지 기다리지 않음)- 실시간성 응답을 필요로 하지 않는 상황에서 사용- ex) notification, email 전송, push 알림  - 개발자 답게 표현해 보자면 Main thread 가 task 를 처리하는 게 아니라 sub thread 에게 task 를 위임하는 행위  Spring Framework 에서 비동기 프로그래밍 Thread Pool : 비동기 작업을 효율적으로 관리하기 위해 제공되는 스레드 관리 메커니즘. 스프링에서는 @Async와 같은 비동기 처리나, 스케줄링 작업을 효율적으로 처리하기 위해 스레드 풀을 활용 스레드 풀 생성 옵션   1. CorePoolSize : 최소 스레드 개수 2. MaxPoolSize : ..

Spring🌱 2024.11.06

[spring boot] 아마존 aws micro.t2 CPU 사용량 100% 문제 해결

서버가 계속 다운되는 문제상황 발생 최근 EC2를 통해 Spring boot 프로젝트 서비스 배포를 하는 과정에서 CPU 사용률 100% 에러를 겪었다.​분명 배포가 제대로 잘 된것을 확인했는데 !!! 다음 날 PM님께서 관리자 페이지 링크에 접속이 되지않는다고 하셨다...!! 코드 문제는 아닌 것 같아 ubuntu 서버에 접속하려하니 ssh 연결이 되지 않았다... AWS 콘솔을 내가 곧바로 볼 수 있었으면 좋겠지만 계정을 PM 님이 관리 해주고 계셨기에 상황을 공유드리니 우선 PM 님께서 인스턴스를 재가동해주셨다.(재가동 하니까 또 다시 접속이 잘되었음) 처음엔 일시적인 문제인 줄 알고 다시 개발 작업을 진행했는데, 몇 시간 뒤에 또 다시 같은 문제 상황이 반복됐다...ssh 접속이 안되니 로..

[spring boot] 이미지 파일 업로드 서버 재시작 해야 보이는 오류 해결-프로젝트 외부 경로 파일 가져오기

최근 프로젝트 진행 중 파일 업로드를 구현해야 하는 작업이 있었다.​그러나 파일이 /static 폴더 아래에 저장이 되긴 하는데 html 파일에서 이미지를 불러오기 위해서는 서버를 재시작 해야한다는 엄청난 문제에 직면하고 말았음​ ​​​로컬에서 하는 거라면 상관 없겠지만 배포하고 난 후에 서버를 계속 재시작 한다는 건 말이 안되는 상황따라서 이를 해결할 방법을 찾아야 했다. ​​​원인 이미지는 static폴더안에 넣게 되는데 static이 말그대로 정적파일들을 넣는곳으로 인식이돼서 서버를 껐다가 켜야지 static 폴더안에 사진의 주소가 제대로 반영이 돼서 사진들이 보인다. 짧게 말하면 사진을 올리고 서버를 꼭 껐다가 켜야만 사진이 보임!​= devtools 망치 누르고 나서 사진이 보임이미지 폴더가 프..

[spring boot] swagger API 문서 자동화 하는 방법

이번 외주 프로젝트를 진행하면서 가장 먼저 진행했던 프로세스는 무엇이었냐면 aws 키를 받아 api 서버 오픈 준비를 하는 것이었다. ​​​서버 오픈은 했지만 swagger 문서 ..? 이건 처음 들어봐서swagger 가 뭔지 유튜브/ 블로그 등을 찾아보며 어떻게 하는건지 방법을 찾아봤다​​Swagger 란?Swagger 는 REST API를 설계, 빌드, 문서화 및 사용하는 데 도움이되는 OpenAPI 사양을 중심으로 구축 된 오픈 소스 도구 세트입니다. - About Swagger Specification​Swagger 를 왜 사용할까?​출처 : 어라운드 허브 스튜디오 유튜브* API를 사용해 본 사람은 알겠지만 api 에는 정말 많은 정보가 담겨서 온다 ! 그중에는 엄청 길고 비슷한 영어이름도 많아..

Spring🌱 2024.10.18

[spring boot] let's encrypt 를 활용하여 SSL 무료 인증서 발급받기 (putty, WinSCP)

웹 사이트를 만들고 배포하고 나면 이제 누구든 내 사이트에 들어와 이용 할 수 있게 됩니다 그러나 대부분의 사이트들은 http가 아닌 https 프로토콜을 사용합니다  그 이유는 무엇일까요? HTTP와 HTTPS의 차이점은?출처 입력HTTPS는 TLS 암호화를 갖춘 HTTP입니다. HTTPS는 TLS(SSL)를 사용하여 일반 HTTP 요청과 응답을 암호화 하므로 더 안전하고 보안이 강화됩니다.  즉 HTTPS를 사용하는 웹 사이트는 사용자가 더 신뢰할 수 있습니다.  HTTPS 를 왜 굳이 사용해야할까?출처 입력 단순히 보안적인 이유 때문에 사용하는 것도 있지만 프로젝트 진행 시 프론트엔드와 백엔드 간의 통신이 이루어 질 때 한 쪽만 https 이고 다른 한 쪽은 http 인 경우 mixed conten..

Spring🌱 2024.10.18