Spring - 딸깍으로 쉽게 Request 로그 남기기(CommonsRequestLoggingFilter)
·
Spring
배경애플리케이션을 운영하다 보면, 클라이언트의 요청이 어떻게 들어오는지, 어떤 데이터가 전달되는지 로그를 남겨둬야 할 때가 있다. 특히, 복잡한 API를 개발하거나, 에러 대응 및 디버깅이 필요할 때 요청 정보를 간단하게 로깅할 수 있다면 작업 효율이 크게 올라갈 것이다. 현재 진행중인 프로젝트에서 Request에 대한 로깅이 필요했고, Spring에서 제공하는 CommonsRequestLoggingFilter라는 도구를 알게되었다. 복잡한 설정 없이 손쉽게 Request 정보를 로깅할 수 있다는 장점이 있다. 이 글에서는 CommonsRequestLoggingFilter를 이용해 딸깍 한 번으로 쉽게 Request 요청을 로그로 남길 수 있는지 공유하려고 한다. 코드는 아래 링크에서 확인할 수 있다. ..
Spring - Spring Data Envers로 엔티티 변경 이력을 쉽게 관리해보기
·
Spring
배경사이드 프로젝트나 실제 서비스에서 데이터 변경 이력 관리가 필요할 때가 많다. “누가, 언제, 무엇을, 어떻게 바꿨는지” 추적이 필요하다면, Spring Data Envers가 딱이다. 이번 글에서는 Spring Data Envers를 실제로 적용하는 방법을, 내가 직접 해보면서 겪은 시행착오와 함께 정리해본다. Envers란?Hibernate Envers는 JPA 엔티티의 변경 이력을 자동으로 관리해준다. Spring Data Envers는 이를 Spring Data JPA와 자연스럽게 통합해주기 때문에, 기존 Repository 패턴을 그대로 쓰면서도 이력 관리가 가능하다 프로젝트에 Envers 적용하기의존성 추가build.gradle에 아래 의존성을 추가한다.implementation 'org...
Spring Kafka - 여러 타입의 메시지를 하나의 Topic에 발행하고 수신하는 방법 (MessageConverter)
·
Spring
개요Spring Kafka는 @KafkaListener(메시지 받기), KafkaTemplate(메시지 보내기), application.yml(설정) 등 Spring의 익숙한 방식으로 Kafka의 복잡한 설정을 쉽게 다룰 수 있도록 해준다.Kafka의 기본 개념과 Spring Kafka 사용 방법은 이전 글을 참고바란다. Spring Kafka - Spring Boot에서 Kafka 사용하기개요이직에 성공했다. 이직하는 회사에서는 Kafka를 사용한다. 나는 Kafka를 사용해 본 적이 없기 때문에 입사일이 오기 전에 미리 Kafka에 대해 알아보고 Spring을 통해 간단하게 Kafka를 사용해 보자 Agreen-bin.tistory.com 개발 환경Java 21Spring Boot 3.4.xSprin..
Spring Kafka - Spring Boot에서 Kafka 사용하기
·
Spring
개요이직에 성공했다. 이직하는 회사에서는 Kafka를 사용한다. 나는 Kafka를 사용해 본 적이 없기 때문에 입사일이 오기 전에 미리 Kafka에 대해 알아보고 Spring을 통해 간단하게 Kafka를 사용해 보자 Apache Kafka는 대용량 데이터를 빠르고 안정적으로 주고받을 수 있도록 도와주는 실시간 분산 메시지 큐이자 이벤트 스트리밍 플랫폼이다.(주문, 결제, 로그, 알림 등 다양한 이벤트를 빠르게 여러 서비스에 전달해 준다.) 쉽게 말해서, 여러 시스템이나 서비스 사이에서 데이터를 주고받을 때 중간에서 데이터를 안전하게 전달하고, 필요할 때 여러 곳에서 동시에 꺼내 사용할 수 있도록 해주는 우체국 같은 역할을 한다. 넷플릭스, 배달의 민족, 우버 등 실시간, 대용량 데이터 처리가 필요한 서비..
Spring - Spring Boot 3.x에서 View 렌더링되지 않는 원인과 해결 방법
·
Spring
배경Spring Boot 3로 프로젝트를 개발하던 중 에러가 발생했다. 간단한 웹 페이지를 JSP로 구현하고 있었는데, 페이지를 열어보니 JSP 화면 대신 Whitelabel Error Page가 나타났다. 컨트롤러에서 main이라는 뷰 이름을 반환했고, 해당 JSP파일도 정확한 위치에 있었다. 그런데 왜 Spring Boot는 JSP를 찾지 못하고 Whitelabel Error Page를 표시하는걸까? build.gradledependencies { ... // JSP implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl'..
Spring Boot - Repository 단위 테스트하기(JPA, Querydsl, Mybatis)
·
Spring
유닛 테스트(unit test)는 컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차다.즉, 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차를 말한다.이를 통해서 언제라도 코드 변경으로 인해 문제가 발생할 경우, 단시간 내에 이를 파악하고 바로 잡을 수 있도록 해준다.이상적으로, 각 테스트 케이스는 서로 분리되어야 한다. 이를위해 가짜 객체(Mock object)를 생성하는 것도 좋은 방법이다. - 위키백과 배경현재 내가 일하고 있는 조직에서는 테스트 코드 작성을 하지 않는다. 이로 인해 코드 수정이나 기능을 추가해야 할 때 수동으로 테스트를 진행해야 했다. 작은 변경사항에도 전체 기능을 다시 테스트해야 하는 상황이 자주 발생했고, 이는..
Spring Boot - Service 단위 테스트하기(JUnit5, Mockito, AssertJ)
·
Spring
유닛 테스트(unit test)는 컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차다.즉, 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차를 말한다.이를 통해서 언제라도 코드 변경으로 인해 문제가 발생할 경우, 단시간 내에 이를 파악하고 바로 잡을 수 있도록 해준다.이상적으로, 각 테스트 케이스는 서로 분리되어야 한다. 이를위해 가짜 객체(Mock object)를 생성하는 것도 좋은 방법이다. - 위키백과 배경현재 내가 일하고 있는 조직에서는 테스트 코드 작성을 하지 않는다. 이로 인해 코드 수정이나 기능을 추가해야 할 때 수동으로 테스트를 진행해야 했다. 작은 변경사항에도 전체 기능을 다시 테스트해야 하는 상황이 자주 발생했고, 이는..
Spring Boot - Controller 단위 테스트하기(JUnit, MockMvc, Mockito)
·
Spring
유닛 테스트(unit test)는 컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차다.즉, 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차를 말한다.이를 통해서 언제라도 코드 변경으로 인해 문제가 발생할 경우, 단시간 내에 이를 파악하고 바로 잡을 수 있도록 해준다.이상적으로, 각 테스트 케이스는 서로 분리되어야 한다. 이를위해 가짜 객체(Mock object)를 생성하는 것도 좋은 방법이다. - 위키백과 배경현재 내가 일하고 있는 조직에서는 테스트 코드 작성을 하지 않는다. 이로 인해 코드 수정이나 기능을 추가해야 할 때 수동으로 테스트를 진행해야 했다. 작은 변경사항에도 전체 기능을 다시 테스트해야 하는 상황이 자주 발생했고, 이는..
Spring Boot - JPA 스키마, 데이터 초기화하기 (SQL script -> ddl-auto)
·
Spring
개요이전에 작업했던 프로젝트를 Mybatis에서 JPA, Querydsl로 마이그레이션하는 작업을 하고 있다.기존 초기화를 script(schema.sql(테이블 생성), data.sql(더미데이터 생성)) 파일을 사용하다가 JPA를 사용하게 되면서 ddl-auto를 사용해 Table 생성하기로 했다.DDL이란?DDL(Data Definition Language)은 SQL의 하위 집합으로 데이터베이스의 구조와 테이블, 뷰, 인덱스 프로시저와 같은 개체를 정의하는데 사용된다. DDL문은 데이터 베이스 개체를 생성, 변경 및 삭제 하는데 사용된다. (CREATE, ALTER, DROP, TRUNCATE, RENAME) 데이터 초기화 설정SQL script (기존) 기존에는 script 기반으로 데이터를 초기..
Spring Boot Test - Mockito로 Static Method Mock 만드는 방법
·
Spring
개요현재 프로젝트에서 SesseionUser라는 클래스가 있다.SessionUser는 세션에 User 정보를 관리하는 유틸리티 클래스로, static 메서드로 작성되어있다.public class SessionsUser {    public static void setSessionUser(HttpSession session, Users users) {        session.setAttribute("userSessionInfo", users);    }    public static Users getSessionUser(HttpSession session) {        return (Users) session.getAttribute("userSessionInfo");    }    public st..
Cold Bean
'Spring' 카테고리의 글 목록