Spring - @Value가 계속 null을 가져올 때 원인과 해결 방법
·
나의 에러 일지
@Value란?DB 접속 정보나 비밀번호와 같이 민감한 정보를 별도의 파일로 분리해서 환경 정보에 맞는 값을 불러오도록 하는 애너테이션이다. application.properties 또는 application.yml에 값을 설정하면 필드나 메서드에 값을 주입해준다. 배경Refresh Token을 암호화해서 클라이언트에 전달하기 위해 AES128 암호화 클래스를 구현했다. 구현 후 암호화가 잘 이루어지는지 확인하기 위해 테스트를 진행했는데 예외 처리했던 ENCRYPTION_FAILED가 발생했다.확인해보니 @Value 애너테이션을 통해 application.yml로부터 전달받아야 할 secretKey가 제대로 전달 받지 못하고 null을 반환하기 때문에 발생했다. AES128Config@Componentp..
Spring - Spring Security 적용시 순환 참조 발생 (Spring circular reference)
·
나의 에러 일지
스프링 순환 참조(Circular reference)란?서로 다른 빈(Bean)이 서로를 참조하면서 스프링이 어떤 빈을 먼저 생성해야 할지 결정하지 못하기 때문에 발생한다.순환 참조는 DI 상황에 발생한다. DI 방법은 Setter, 필드, 생성자 방식으로 3가지가 있다.Setter, 필드 주입 방식필드, Setter 주입 방식에서는 애플리케이션 로딩 중에는 순환 참조 문제가 발생하지 않는다.애플리케이션 로딩 중에 주입하지 않고 실제로 사용하는 시점에 주입을 하기 때문에 해당 메서드를 호출하는 시점에 순환 참조가 발생한다.생성자 주입 방식반면 생성자 주입 방식은 애플리케이션 로딩 중에 순환 참조가 발생한다.빈을 생성하는 시점에 참조하려는 다른 빈을 주입해줘야 하기 때문이다. 순환 참조의 경우 빈A와 빈B..
Spring Security - io.jsonwebtoken.security.WeakKeyException 원인과 해결 방법
·
나의 에러 일지
새로운 프로젝트를 시작하면서 Spring Security와 JWT를 이용해 회원가입 및 로그인 기능을 구현하고 있다. JWT 생성 로직을 구현하고 테스트하는 과정에서 만난 간단한 에러에 대해 공유해 본다. 에러는 AccessToken과 RefreshToken이 잘 생성되는지 테스트하는 과정에서 발생했다. The specified key byte array is 160 bits which is not secure enough for any JWT HMAC-SHA algorithm. The JWT JWA Specification (RFC 7518, Section 3.2) states that keys used with HMAC-SHA algorithms MUST have a size >= 256 bits (..
Nginx - Failed to load resource: the server responded with a status of 413 (Request Entity Too Large) 원인과 해결 방법
·
나의 에러 일지
도메인 연동을 하기 위해 NginX 서버를 설정한 이후 서비스에서 이미지 파일을 업로드하려고 했을 때 발생한 에러다. 원인 처음에는 저번에 해결했던 S3 업로드 용량 제한 설정 문제가 또 발생한 줄 알았다. 알아보니 NginX에서도 파일 업로드 크기 제한을 설정해야 했다. 원하는 파일 크기를 설정하면 정상적으로 작동된다. 해결 나는 EC2(우분투)에 NginX를 설치했다. nginx.conf 파일에 접근해야 한다. 우분투는 /etc/nginx 디렉토리에 위치해 있다. $ vim /etc/nginx/nginx.conf 그러면 nginx.conf파일이 열리는데 항목 중 http 블록에 client_max_body_size를 입력하고 뒤에 원하는 업로드 제한 용량을 설정한다. 나는 30MB로 설정했다. 아무것..
Spring Boot - Swagger(3.0.0) 적용 시 발생하는 오류 원인과 해결 방법
·
나의 에러 일지
Spring Boot(2.7.7)에 Swagger(3.0.0)을 적용하면서 발생했던 에러다. Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException 원인 Spring Boot 2.6 버전부터 Spring MVC 핸들러 매핑에 대해 요청 경로를 일치시키는 기본 전략이 AntPathMatcher에서 PathPatternParser로 변경되었다고 한다. 이 때문에 몇몇 라이브러리에서 오류가 발생하는데 그 중 하나가 Swagger다. 우리는 이 전략을 기존의 AntPathMatcher로 변경해주어야 한다. 해결 application.yml에 속성을 아래와 같이 추가해주어 요청..
Spring - MissingServletRequestPartException 원인과 해결법
·
나의 에러 일지
org.springframework.web.multipart.support.MissingServletRequestPartException: Required request part 'file' is not present@RequestParam을 사용하면서 발생했던 에러이다.지금 개발중인 서비스의 요구사항 중 하나로 습관 챌린지에 참여한 후 매일 참여한 습관을 수행했다는 인증 게시물을 올려야 하는데, 원래는 필수로 이미지를 업로드할 수 있어야 했다. 하지만 개발 중간에 이미지를 업로드할 수도 있고 하지 않을 수도 있도록 요구사항이 변경되었다.해당 에러는 이미지를 업로드하지 않고 인증 게시물을 게시했을 때 발생했다. 원인원인은 아주아주 간단하다. @RequestParam을 별도로 설정하지 않으면 require..
Spring - c.s.f.storage.AmazonS3ResourceStorage : Unable to execute HTTP request: Timeout waiting for connection from pool 해결
·
나의 에러 일지
진행 중인 프로젝트의 마무리 단계에서 테스트 중 에러가 발생했다.새로운 습관을 등록할 때 이미지를 등록하게 되는데 이 과정에서 S3과의 연결 시간 초과로 요청을 처리할 수 없다는 것이다. 분명 문제없이 잘되던 작업이었기 때문에 멘붕이었다.c.s.f.storage.AmazonS3ResourceStorage : Unable to execute HTTP request: Timeout waiting for connection from pool하지만 에러 로그를 따라 읽어보니 쉽게 발생지를 찾을 수 있었다. 얼마 전에 업로드된 S3 Object 정보를 읽어 오기 위해서 코드를 추가했었다.out.println(amazonS3Client.getObject(bucket, fullPath).toString());바로 이..
Spring - MaxUploadSizeExceededException 원인과 해결 방법
·
나의 에러 일지
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is 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 file exceeds its maximum ..
Git - .gitignore가 작동되지 않을 때 해결 방법
·
나의 에러 일지
리포지토리에 올리지 않고 싶은 파일들이 있다. 그럴 때 .gitignore 파일에 올리고 싶지 않은 파일의 경로를 넣어주면 자동으로 file changes 목록에서 제외를 시켜준다. 이번에 사이드 프로젝트에서 FCM을 구현하다가 Public Repository에 공개해서는 안되는 파일이 있었는데, .gitignore에 해당 파일을 추가는데 Changes에 나오는 것이다. 원인 .gitignore에 파일을 추가하기 전 stage 올라갔던 파일들은 캐시처리가 되어서 캐시에 남아있기 때문이다. (공개해서는 안되는 파일인줄 모르고 해당 파일을 stage에 올렸었다.) 해결 방법 캐시를 제거하면 해결된다. 아래 명령어를 입력하면 된다. git rm -r --cached git add git commit -m "g..
Java - UnsupportedOperationException 원인과 해결법
·
나의 에러 일지
팀 프로젝트가 끝이 났다. 모든 정신을 프로젝트에 집중하다보니 한 달이라는 시간이 금방 지나갔다. 그동안 손을 놓아버린 알고리즘과 다시 친해지기 위해 오랜만에 문제 하나를 풀어보았다. 오늘 다루게 될 에러는 알고리즘을 풀면서 만난 UnsupportedOperationException이다. Array를 List로 변환한 후 List 요소를 삭제하고 싶었는데, 이 과정에서 에러가 발생했다. 아래는 에러가 발생했던 코드이다. class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; List compList = Arrays.asList(completion); for (String s..
Cold Bean
'나의 에러 일지' 카테고리의 글 목록 (4 Page)