Spring
[Spring/Nginx] MultipartFile 최대 용량 설정하기 (MaxUploadSizeExceededException / Request Entity Too Large)
❌ 에러 상황 org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: The field multipartFiles exceeds its maximum permitted size of 1048576 bytes. AWS S3 파일 업로드 중 발생한 문제 MaxUploadSizeExceededException AWS S3 와 연동해서 파일을 업로드 할 때 http 41..
[Spring] JPA + Lombok 사용할 때 @OneToOne 에서 발생하는 StackOverflowError 해결
JPA 와 Lombok 을 같이 사용중이라면 발생할 수 있는 에러 ❌ 원인 @OneToOne 또는 @OneToMany 를 통해 연관관계를 정의했고 이후 데이터를 꺼내올 때 hashCode 또는 toString 을 호출하면서 무한 순환 참조에 의해 스택 오버플로우가 발생하는 에러이다 java.lang.StackOverflowError: null at com.tikitaka.naechinso.domain.member.entity.Member.toString(Member.java:21) ~[main/:na] at java.base/java.lang.StringConcatHelper.stringOf(StringConcatHelper.java:453) ~[na:na] at com.tikitaka.naechinso..
[AWS] Elastic Beanstalk + Github Actions 사용해서 Spring boot CI/CD 파이프라인 구축하기
동아리 스터디의 일환으로 시작된 Beanstalk 으로 CI/CD 파이프라인 구축하기 처음 써보는거라 확실히 어렵지만 EC2 생성하고 RDS 생성하고 https 설정해주고... 하던 시절과 비교하면 확실히 배포 속도가 엄청 빠르긴 하다 물론 그 과정에서 삽질을 엄청나게 하긴 했지만... 하지만 결론적으로는 빌드 시간이 많이 오래 걸리기도 하고 배포서버와 개발서버 그리고 혹시 모르지만 웹까지 하나의 EC2 환경에서 배포하고 싶어서 JAR 환경에서 Docker 환경으로 이동할 것이다 JAR 이나 WAR 로 배포하는 것은 물론 좋지만 여러 EC2 인스턴스를 사용하기엔 돈이 모자란 ^^.... 가난한 대학생에겐 하나의 EC2에서 멀티 컨테이너로 돌리는게 더 나을 것이라는 판단이다 그래도 공부한게 아까우니까 까먹..
[Spring] 문자 인증 구현하기 (Redis + 네이버 클라우드 플랫폼 SMS API)
지금 하는 중인 프로젝트가 원래는 아이디 + 비밀번호 기반 로그인이여서 메일 기반 인증과 OAuth 를 준비중이었는데 다시 문자 인증 기반 로그인으로 기획이 변경되었다 문자 인증 같은 경우는 예전 프로젝트에서 네이버 SMS API를 통해 구현해 본 적이 있어서 그다지 어렵지는 않지만 마침 만드는 김에 복습하는 차원으로 구현하고 나서 글을 적어보기로 했다 ⚙️ Dependency //webflux implementation 'org.springframework.boot:spring-boot-starter-webflux' //redis implementation 'org.springframework.boot:spring-boot-starter-data-redis' 서버 상에서 http 요청을 보내고 응답받기..
[Spring] 스프링 시큐리티 + JWT로 카카오 로그인 구현하기, 프론트엔드와 연결
지난 번에 DefaultOAuth2Service 를 상속하여 스프링 시큐리티에 등록하는 방식으로 카카오 로그인을 구현해보았다 하지만 이런 식으로 하게 되면 스프링 내장 함수을 이용하면서 편리하게 구현을 할 수는 있지만 구조가 너무 추상적이고 컨트롤러에서 통제하기가 어려웠다 그래서 이번에는 OAuth 인증 과정의 본질을 뜯어보면서 하나하나 구현해보았다 💾 이전 글 (DefaultOAuth2Service 이용) https://gengminy.tistory.com/39 [Spring] OAuth2Service + 스프링 시큐리티 + JWT로 카카오 로그인 구현하기 📌 OAuth "OpenID Authorization"의 약자 비밀번호를 제공하지 않으면서 웹사이트나 어플리케이션 접근 권한을 부여할 수 있는 로그..
[Spring] OAuth2Service + 스프링 시큐리티 + JWT로 카카오 로그인 구현하기
📌 OAuth "OpenID Authorization"의 약자 비밀번호를 제공하지 않으면서 웹사이트나 어플리케이션 접근 권한을 부여할 수 있는 로그인 방식 기존 아이디와 비밀번호를 통한 로그인 방식은 보안상 취약한 점이 아주 많다 그러나 OAuth 를 사용하면 특정 접근 권한만 부여할 수도 있고 강력한 보안을 제공하는 대기업에 사용자 인증과 인가를 위임하는 방식으로 안전하게 로그인할 수 있다 🏛 Dependency implementation group: 'org.springframework.security', name: 'spring-security-oauth2-client', version: '5.6.3' build.gradle 에 OAuth 관련 의존성을 추가해준다 🚀 Kakao Developers ..
[Spring] Swagger 연동 시 Unable to infer base url 접속 에러 (ResponseBodyAdvice)
Unable to infer base url. This is common when using dynamic servlet registration or when the API is behind an API Gateway. The base url is the root of where all the swagger resources are served. For e.g. if the api is available at http://example.org/api/v2/api-docs then the base url is http://example.org/api/. Please enter the location manually: 스웨거 사용 중인 스프링 부트 서버에서 기능 업그레이드 중 갑작스럽게 나타난 에러 원래는 ..
[Spring] 스프링 시큐리티로 CORS와 preflight 설정하기
스프링 시큐리티로 CORS 설정 삽질해서 해결한 과정을 올려본다 사실 결론부터 말하자면 설정은 몇 줄 빼고 아주 잘 되어있었고 도커 이미지 태그가 달라져서 갱신이 안됐던거였다 ^^^^^;;; 로컬 환경에서는 너무나도 잘 되다가 EC2에 띄웠을 때만 자꾸 계속 preflight 과정에서 CORS 이슈가 생겨서 무한 삽질을 하고 있었다 그러다가 도커 컴포즈 파일을 봤는데 도커 이미지 태그가 바뀐 걸 보고 아,,, 한숨밖에 안나왔다 그 과정에서 CORS 관련 공부는 된 거 같아서 긍정적으로 생각할란다 🔥 문제 상황 주니어 개발자들을 벌벌 떨게 만드는 무시무시한 CORS 에러 Access to XMLHttpRequest at '{SERVER}' from origin '{ANOTHER ORIGIN}' has be..