JPA Auditing은 Spring Data JPA에서 제공하는 특성 중 하나로, 엔터티의 생성 및 수정 시각을 자동으로 관리해주는 기능이다. 이 글에서는 이 기능이 어떻게 동작하는지와 관련된 여러 의문점들을 해결하고자 한다.JPA Auditing을 이용하면 @Cre
에러: Failed to configure a DataSource 오류 발생Error Screenshot 1원인: Spring Boot의 의견 기반의 구성 사용스타터 의존성 추가 시 자동 구성 시도데이터베이스 연결 드라이버 포함 시 연결 시도application.pro
상황: index.html 출력 시 한글이 깨져 보임Problem Screenshot원인: head나 body에 문자 인코딩을 위한 meta태그가 없음Absence of Encoding Screenshot해결: meta태그를 통한 문자 인코딩 설정 추가Solution
상황: Postman을 이용하여 서버에 데이터를 전송하려 할 때, 문제 발생Issue Screenshot원인: HttpMessageNotReadableExceptionSpring에서 웹 요청의 본문(body)의 데이터를 예상하는 엔드포인트에 해당 데이터가 제공되지 않았
데이터를 DB에 저장하기 전에 데이터베이스를 먼저 생성했다.Database Creation ImageIntelliJ와 해당 데이터베이스를 연결하여, 개발 과정에서 DB를 직접 확인하고 관리할 수 있게 했다.IntelliJ DB Connection ImageDB에 데이터
직렬화 오류직렬화에서 오류가 발생했다.Jackson 라이브러리에서 직렬화를 위해서는 getter나 setter 중 하나가 필요하다는 것을 깨달았다. @Getter@Setter Serialization Error
스프링 부트 개발 과정에서 다양한 문제를 만나게 된다. 그 중, 템플릿 엔진(예시: Thymeleaf)과 관련된 오류는 @Controller와 @RestController의 차이점을 명확히 인지하지 못함으로 인해 발생하는 경우가 많다.다음과 같은 오류 메시지가 개발 과
UserRoleEnum에서 UserRoleEnum role = UserRoleEnum.USER; 코드를 실행하면 role에는 어떻게 "user"라는 문자열이 들어가는가는지가 도저히 이해가 안 된다.UserRoleEnum이라는 enum 클래스는 두 개의 상수, USER와
comments 테이블과 memo table에서의 cascade 설정은 어떻게 하지?Jpa CaseCade 참고 사이트테이블1(Memo)의 특정 행이 삭제될 때 테이블2(Comment)에서 해당 Memo의 id와 일치하는 postId를 가지는 모든 행을 삭제하려면 두
원인은 postman에서 x-www-form-urlencoded가 아닌 raw 형태로 보냈기 때문에 발생 x-www-form-urlencoded에 key - value 값으로 전달하자 문제 해결 로그인 상태를 알려주는 controller를 만들고 해당 컨트롤러로 상태
1\. 트러블 슈팅문제원인Spring에서 JSON 객체를 com.fanplayground.fanplayground.dto.UserUpdateRequestDto 클래스의 인스턴스로 변환하려 할 때, 해당 클래스에 JSON 객체의 값을 받아올 수 있는 적절한 생성자나 설정
Mockito 오류위 스크린샷에서 볼 수 있는 오류는 Mockito의 argument matcher를 잘못 사용했을 때 발생하는 것이다. Mockito에서는 any(), eq(), isNull()과 같은 argument matcher들을 제공하는데, 이러한 matche
Lazy InitializationJPA에서는 연관된 엔터티를 로딩하는 전략 중 LAZY 전략을 선택할 수 있다. 이 전략은 해당 엔터티에 실제로 접근될 때까지 데이터를 로딩하지 않는다. 그러나 트랜잭션 범위 밖에서 LAZY 전략으로 로딩된 엔터티에 접근하려고 하면 L
SecurityUtil의 getPrincipal 메서드가 static으로 선언되어 있어서 오류가 발생 하였다. static 메서드는 Mockito를 사용하여 직접 모킹할 수 없다. \-> MockStatic을 사용해야 한다.의존성 추가프로젝트의 build.gradle
Spring Security를 포함한 프로젝트에서 Controller 테스트 중에 403, 401 같은 인증 에러발생
Service에 테스트 코드를 적용할려구 하는데 어떤게 좋을까?Unfinished stubbing detected here:\-> at com.fanplayground.fanplayground.service.BoardColumnServiceTest.createBoard
Mockito는 단위 테스트를 작성할 때 유용한 도구로 실제 구현 대신 가상의 구현을 사용하여 원하는 방식대로 행동하게 만들 수 있다. Spring Boot에서 MockMvc를 사용하여 Controller 레이어의 테스트를 진행하던 중 다음과 같은 문제에 직면했다위 코
테스트 코드 실행 중 특정 부분에서 NoSuchElementException이 발생했다. 이 예외는 주로 특정 요소가 예상한 위치나 컬렉션에 없을 때 발생하는 Java의 java.util 패키지의 런타임 예외다.해당 코드에 예외가 발생했을때 사용자 예외를 설정해 두어서
Lombok 라이브러리는 Java에서 반복적인 코드를 줄이기 위한 유용한 도구 중 하나이다.그 중에서도 @Builder와 @NoArgsConstructor는 자주 사용되는 어노테이션들이다.그러나 두 어노테이션을 함께 사용하면 때때로 오류가 발생할 수 있다.@Builde
Thymeleaf 템플릿 엔진에서 return "/"; 사용 시 발생하는 오류.오류 메시지이 메시지는 "/" 라는 템플릿을 찾을 수 없거나 설정된 템플릿 리졸버(Template Resolvers)로 접근할 수 없다는 것을 의미한다처음에 return "/";를 사용한 이
GitHub Actions 워크플로우 실행 중 EC2 서버로의 resources 디렉터리 복사 과정에서 오류 발생하였다. 오류 메시지scp 명령을 사용하여 파일 또는 디렉터리를 원격 서버로 복사할 때 해당 경로의 디렉터리가 미리 존재하지 않으면 오류가 발생한다. 여기서
로컬에서는 정상적으로 작동하던 Spring Boot 웹 애플리케이션을 EC2에 배포 후 접속을 시도했을 때 아래와 같은 오류가 발생하였다.오류 메시지를 보면, Thymeleaf 템플릿 엔진이 /user/login 템플릿을 찾지 못하는 것으로 판단된다. 서버 내에서 해당
Spring Boot와 Thymeleaf 환경에서 특정 HTML 페이지에 접근할 때 문제가 발생한다. 페이지를 로드할 수 없거나 예상치 못한 동작이 발생하였다.Spring Web MVC는 웹 요청을 처리하기 위해 Controller 클래스를 사용한다.HTML 파일을 직
문제 상황Postman에서 80 포트를 통해 API 요청을 보낼 때 로드 밸런서에 의해 443 포트로 바꿔서 통신이 되야하지만 아래처럼 본문이 비었다는 예외 발생한다.com.fasterxml.jackson.databind.exc.MismatchedInputExcepti
Spring Boot 웹 서비스 로그에서 'Content-Type'이 'text/plain;charset=UTF-8'에 대한 지원이 없다는 경고 메시지가 확인되었다. JMeter가 해당 Content-Type으로 요청을 보내고 서버에서 해당 Content-Type을 처
Springboot 웹서버를 JMeter로 성능 테스트 중, 단일 스레드 환경에서는 문제가 없으나 멀티 스레드 환경에서 문제가 발생하였다.로깅 강화로깅을 통해 문제 발생 지점을 확인하려 하였다. 로그에는 스택 트레이스, 입력 값, 쓰레드 이름 및 ID 등을 포함시켰다.
예상과 달리 IllegalArgumentException이 아닌 java.lang.NullPointerException 오류가 발생하였다. adminDonationEventRepository.findById(any(Long.class)) 메소드는 Optional를 반환
오류 타입 = NullPointerException문제 발생 지점 com.example.team258.service.BookApplyDonationService.createBookApplyDonation원인com.example.team258.entity.Book.get
양방향 연관 관계가 설정된 두 엔터티 간에 한 쪽 엔터티만 삭제하려 할 때 데이터베이스 제약 조건 위반 오류 발생한다.양방향 연관 관계에서 한 쪽 엔터티만 삭제하려 할 때 연관된 다른 엔터티와의 관계가 여전히 존재하기 때문에 데이터베이스 외래키 제약 조건이 위반될 수
Member 엔티티의 name 필드에 @NotEmpty 어노테이션을 사용하여 검증을 시도했지만 name에 null 또는 빈 문자열을 넣었을 때 오류가 발생하지 않는다.MemberMemberApispring-boot-starter-validation 의존성이 프로젝트에
BookDonationEvent를 삭제할 때 연결된 Book까지 함께 삭제된다.orphanRemoval = true 설정 때문에, 연관 관계가 끊어진 Book 엔터티가 데이터베이스에서 자동 삭제된다.JPA의 orphanRemoval = true 설정은, 부모 엔터티에서
BookDonationEvent와 연관된 Book 및 BookApplyDonation 사이의 연관 관계를 삭제하려고 할 때, java.lang.IndexOutOfBoundsException 오류가 발생했다. 디버깅을 진행한 결과 BookApplyDonation 객체가
도서와 나눔 이벤트 간의 연관 관계를 삭제하는 과정에서 ConcurrentModificationException이 발생하였다. 이 오류는 컬렉션을 순회하는 동안 해당 컬렉션의 구조가 변경될 때 발생한다.코드에서 bookDonationEvent.getBooks().for
BookRepository의 findPageByBookStatus 메서드에서 페이징 쿼리를 사용하는데 필요한 Pageable 매개변수가 누락되어 오류가 발생했다.원인 파악로그 메시지를 확인하면, Could not create query for ... Reason: Pa
코드를 진행 중 getbooks.get(0)을 사용해 특정 책 하나만을 조회하려고 했으나, 이상하게 전체 책을 조회하는 쿼리가 실행되었다는 문제가 발생했다. 특히나 디버거를 통해 실행할 때와 콘솔에서 직접 실행했을 때 쿼리의 결과가 다르게 나타났다.문제를 해결하기 위해
JPA 페이징 처리 문제BookDonationEvent와 Book 간의 1대다 관계에서 BookDonationEvent 중심의 페이징 쿼리 실행 시 원하는 결과를 얻지 못하는 현상이 발생했다. 커스텀 커리를 작성하였지만 정상적으로 동작하지 않는다.도서와 event가 1
프론트에서 날짜 정보를 보냈음에도 불구하고 RequestParam에서 해당 값을 변환하지 못하는 문제 발생하였다.프론트에서 보내는 형태가 LocalDate이지만 LocalDateTime으로 변환할려고 하니 문제가 발생하였다.즉 HTTP 요청 파라미터의 문자열 포맷과 @
bookService 객체가 초기화되지 않아 해당 객체의 메서드를 호출할 때 NullPointerException이 발생하였다.오류를 읽어보니 BookService 객체가 초기화되지 않아 null 상태여서 문제가 발생한 것을 추정된다.@InjectMocks 어노테이션
워드프레스에서 "Error establishing a database connection" 에러 발생했다이미 3306을 로컬에서 사용하고 있어서 mysql컨테이너와 연결을 3307:3306으로 하였기에 문제가 발생 한 걸로 추정된다.워드 프레스의 db 연결의 포트를 3
Docker를 사용하여 MySQL 컨테이너를 실행하려 할 때 윈도우의 외장 드라이브를 볼륨으로 마운트하려고 했으나 컨테이너가 제대로 작동하지 않는 문제가 발생했다.현재 윈도우 환경에서 Docker를 사용하고 있으며 WSL 2 백엔드를 사용 중이다.외장 드라이브를 사용하
Spring Boot에서 Controller 계층의 메서드를 테스트하던 중 NullPointerException이 발생했다.@RequestParam을 사용하여 요청 파라미터를 받아오는 과정에서 파라미터의 기본값이 null로 설정되어 있었고, 이로 인해 테스트 중에 nu
기존에는 JPA의 페이징 기능을 사용하여 데이터를 조회하고 있었다. 하지만 데이터의 양이 많아지면서 페이지를 계산하기 위한 카운트 쿼리의 실행 시간이 길어지기 시작했고 이로 인해 사용자가 데이터를 조회하는데 거의 4 ~ 5 초 가까이 걸리는 상황이 발생했다.이 문제를
이전 글에서 우리는 세마포어를 사용하여 동시성 문제를 해결하는 방법을 살펴보았습니다. 그러나 동시성 제어에 대한 탐구는 여기서 그치지 않고, 이번 글에서는 뮤텍스(Mutex)를 활용하여 동시성 문제를 해결해보려고 합니다.뮤텍스(Mutex)는 여러 스레드가 동시에 공유
Kafka를 사용하여 데이터를 전송하는 과정에서 프로듀서에서 객체를 직접 전송하려 할 때 역직렬화 문제가 발생하였습니다.이로 인해 메시지를 정상적으로 처리하지 못하는 상황이 발생하였습니다이 문제의 원인은 프로듀서와 컨슈머 사이의 데이터 직렬화 및 역직렬화 방식이 불일치
Spring Kafka를 사용하여 메시지를 송수신하는 과정에서 org.springframework.kafka.KafkaException: Seek to current after exception 오류가 발생하였습니다.이 오류는 Kafka 컨슈머가 메시지를 정상적으로 처
Kafka Consumer 서비스가 bookDonationEventApplyOutput 토픽으로부터 메시지를 받아 처리하는 도중 List<UserResponseDto> 타입으로의 변환 과정에서 ListenerExecutionFailedException 오류가 발생
Java의 LocalDateTime 타입을 사용하여 개발을 진행하는 과정에서, JSON 변환을 담당하는 Jackson 라이브러리가 LocalDateTime 타입을 올바르게 처리하지 못하는 문제가 발생하였습니다. 구체적으로는 BookApplyDonationRequestD
Kafka 서버로 프로듀서가 데이터를 전송하는 것은 성공하였으나Kafka 리스너가 Kafka 서버에서 데이터를 읽지 못하는 상황이 발생했습니다. 이 문제는 @KafkaListener 애노테이션을 사용하여 Kafka 메시지를 수신하는 Spring Boot 어플리케이션에서
SSH를 통해 AWS EC2 인스턴스에 연결을 시도할 때, team258serverkey.pem 파일의 권한이 너무 개방적으로 설정되어 있어서 연결이 거부되는 문제가 발생하였습니다. 운영 체제: Windows명령 프롬프트: cmd사용자: F 드라이브의 hanghae 폴
카프카 컨슈머가 대상 토픽에 대한 파티션을 할당 받지 못하여 정상 동작하지 못하는 문제가 발생했습니다.컨슈머가 있는 서버에서 카프카 서버 초기화 완료 전에 파티션 할당을 요청하였기에 컨슈머가 파티션 할당을 받지 못한 것으로 추정된다.업로드중..카프카 서버가 완전히 부팅
카프카 서버를 사용하는 서비스에서 메인 서버와 트래픽 서버가 각각 2개씩 존재합니다. 메인 서버에서는 프로듀서를 통해 메시지를 보내고, 트래픽 서버에서는 컨슈머를 사용해 메시지를 받아 비즈니스 로직을 처리한 후 다시 프로듀서로 결과를 보냅니다. 메인 서버에서는 비동기
웹서비스를 그룹 ID를 다르게 설정하여 각 서버에 배포하려 하던 도중에 문제가 발생 하였습니다.위 처럼 환경변수로 GROUP_ID를 설정하였지만 여전히 Ec2의 서버에서는 여전히 문제가 발생하엿습니다.GitHub Actions에서 SPRING_APPLICATION_J
CodeDeploy를 사용하여 소프트웨어 배포 중에 예상치 못한 문제가 발생했습니다.문제의 원인은 appspec.yml 파일의 ApplicationStart 섹션에서 확인되었습니다.ApplicationStart 섹션에서 호출된 sh 파일이 정상적으로 생성되지 않았기 때
웹 애플리케이션(외부 IP)에서 Redis 서버에 접근할 수 없는 문제가 발생하였습니다.기본적으로 Redis는 로컬 머신에서만 접근할 수 있도록 설정되어 있으며, 보안 그룹 또는 방화벽 규칙이 외부 접속을 차단하고 있을 수 있습니다.Redis 설정 수정redis.con
문제의 원인은 SSH 키 파일(Team258_RedisServer.pem)의 권한이 너무 개방적으로 설정되어 있어서 발생한 걸로 추정 됩니다.이 파일은 사용자 본인만이 접근할 수 있도록 제한되어야 합니다.Team258_RedisServer.pem 파일을 마우스 오른쪽
7.X 버전 이전의 ElasticSearch는 기본적으로 보안 기능이 적용되지 않아 HTTP 프로토콜을 통한 접속이 가능했습니다. 그러나 7.X 버전 이후로는 기본적으로 보안 기능이 활성화되어 있으며, 이로 인해 HTTP 프로토콜을 통한 접속 시도가 차단됩니다. 이 경
Spring 프로젝트에서 소켓 IO 서버 설정과 Tomcat 서버의 SSL/TLS 구성에 문제가 발생했습니다. Java KeyStore(.jks)을 사용하여 Spring 프로젝트와 Tomcat 서버에서 SSL 구성을 시도했습니다. 초기 설정에서는 default.prop