Spring - Mac M1(ARM)에서 Embedded Redis를 실행하지 못하는 이유와 해결 방법
·
나의 에러 일지
배경 JWT를 활용한 Spring Security를 작업하면서 Refresh Token을 저장하기 위해서 처음으로 Redis를 Spring에 적용한 후, 로컬 환경과 테스트에서 사용할 Embedded Redis를 힘들게 적용했다. 테스트도 무사히 통과해서 홀가분한 마음으로 풀 리퀘스트를 날리고 머지를 했는데, 조금 뒤 Mac(M1)을 사용하는 팀원이 말했다. “에러나는데?” Caused by: java.lang.RuntimeException: Can't start redis server. Check logs for details. Mac M1(ARM)에서 Embedded Redis가 실행하지 못하는 이유 M1에서 Embedded Redis를 실행하지 못하는 이유는 Redis가 M1의 ARM 프로세서 아키..
Java - Java 8 Local Date Time 직렬화/역직렬화 에러 원인과 해결 방법
·
나의 에러 일지
배경테스트  코드를 짜면서 HttpServletResponse 객체를 ObjectMapper를 통해 Dto로 객체로 역직렬화하는 과정에서 에러가 발생했다. @Test @DisplayName("회원 정보 수정") void patchMemberTest() throws Exception { ... String response = actions.andReturn().getResponse().getContentAsString(); Response responseDto = objectMapper.readValue(response, Response.class); // 여기서 에러 발생! ... }com.fasterxml.jackson.dat..
Spring - non null key required 원인과 해결 방법
·
나의 에러 일지
Caused by: java.lang.IllegalArgumentException: non null key required 원인 Redis에 값을 저장할 때 key 값을 null로 주게 되면 발생하는 에러다. Redis는 key-value 형식으로 값을 저장하기 때문에 key가 null이어서는 안된다. key로는 숫자, 문자열 형식을 사용해야 한다. 해결 key 값으로 올바른 값이 들어가도록 로직을 수정하여 해결했다.
Spring - JPA metamodel must not be empty! 원인과 해결
·
나의 에러 일지
배경 @WebMvcTest로 Controller 유닛 테스트를 진행하는 과정에서 발생했다. JPA에서는 엔티티 클래스의 메타데이터를 이용하여 쿼리를 생성하기 때문에, 이 메타데이터를 담은 메타모델 클래스가 필요하다. JPA metamodel must not be empty 오류는 JPA 엔티티 클래스에 대한 메타모델 클래스가 생성되지 않은 경우 발생한다. 테스트에 필요한 Bean들은 모두 주입 받았다고 생각했는데 왜 이런 에러가 발생했을까? 원인 Auditing을 통한 생성일, 수정일 자동 생성을 구현하면서 @EnableJpaAuditing 애너테이션을 Application 위에 올려서 사용하고 있었다. @EnableJpaAuditing @SpringBootApplication public class T..
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..
Cold Bean
'나의 에러 일지' 카테고리의 글 목록 (3 Page)