전체 글 133

[SPRING BATCH] 1. 스프링 배치란

개요스프링 배치(Spring Batch)는 대량의 데이터를 처리하는 데 특화된 배치 프로세싱 프레임워크이다.데이터 읽기, 처리, 쓰기 과정을 간단하게 설정할 수 있게 설계되어 있다.   프로젝트 생성IntelliJ를 사용한 프로젝트 생성 방법이다.JPA, H2 Database, Spring Batch를 추가하여 프로젝트를 생성한다.// build.gradleplugins { id 'java' id 'org.springframework.boot' version '3.4.0' id 'io.spring.dependency-management' version '1.1.6'}group = 'com.temp'version = '0.0.1-SNAPSHOT'java { toolchain { ..

[SPRING BOOT] 멀티모듈 프로젝트 설계하기

개요대규모 애플리케이션에서는 유지보수와 확장성을 고려해 프로젝트를 모듈로 나누는 경우가 있다.이번 글에서는 Spring Boot 멀티모듈 프로젝트를 설계하고 구성하는 방법을 작성했다.  멀티모듈 프로젝트?멀티모듈 프로젝트는 하나의 루트 프로젝트 아래에 여러 서브모듈을 포함하는 프로젝트 구조이다.각 모듈은 독립적으로 개발 및 배포될 수 있지만, 상호 간에 의존성을 가질 수 있다. 왜 멀티모듈 프로젝트를 사용하는가?모듈화: 비즈니스 로직을 분리하여 코드 유지보수성을 높인다.재사용성: 공통 모듈을 여러 프로젝트에서 재사용할 수 있다.협업 용이성: 팀원이 서로 다른 모듈을 독립적으로 개발할 수 있다.빌드 최적화: 특정 모듈만 빌드하거나 테스트할 수 있다. 프로젝트 구조spring-multi-module-proj..

[SPRING BOOT] WebSocket과 Redis를 활용한 실시간 채팅 시스템 구축하기

개요Spring Boot와 WebSocket을 활용하면 효율적인 실시간 통신 기능을 구현할 수 있다.이번 글에서는 Redis를 추가로 사용해 메시지 저장과 자동 삭제 기능을 갖춘 채팅 시스템을 구축하는 방법을 작성했다.  구성요소WebSocket: 클라이언트와 서버 간의 양방향 통신을 가능하게 하는 프로토콜.Redis: 메시지 저장소로 활용하며 TTL(Time to Live)을 사용해 일정 시간이 지나면 메시지를 삭제.Spring Boot: WebSocket 서버를 구현하는 데 사용.  WebSocket 설정Spring Boot에서 WebSocket 서버를 구현하려면 @EnableWebSocket과 WebSocketHandler를 사용한다. WebSocketConfig.javaWebSocket 설정파일..

[SPRING BOOT] CORS 에러와 DELETE요청 해결하기

개요Spring Boot를 사용하며 DELETE 요청에서만 CORS(Cross-Origin Resource Sharing) 문제가 발생하는 경우가 있다.이번 글에서는 CORS의 기본 개념부터 Spring Boot에서 DELETE 요청과 관련된 문제를 해결하는 방법을 작성했다.   CORS ?CORS는 브라우저가 다른 도메인의 리소스에 접근할 때 보안을 위해 요청을 제한하는 정책이다.예를 들어, 클라이언트 애플리케이션이 http://localhost:3000에서 실행 중인데, API 서버가 http://localhost:8080에 있다면, 기본적으로 브라우저는 이를 다른 서버로 간주한다.CORS 문제는 요청 헤더, 메서드, 또는 인증 정보가 예상과 다를 때 주로 발생한다. DELETE 요청에서 CORS ..

[SPRING BOOT] UnrecognizedPropertyException 해결하기

개요Spring Boot를 사용하며 JSON 데이터를 직렬화/역직렬화할 때, UnrecognizedPropertyException이 발생하는 경우가 있다.이 예외는 Jackson 라이브러리가 JSON을 자바 객체로 변환하는 과정에서 예상하지 못한 필드가 발견되었을 때 발생하는데 이를 해결하는 방법에 대해서 설명하고자 한다. 문제 상황ResponseVo라는 클래스가 아래와 같이 정의되어 있을 때, JSON데이터가 정의되어 있지 않은 필드를 담고 있을 경우 에러가 발생한다.@Datapublic class ResponseVo { private String responseMessage; private String responseCode;}// JSON DATA{ responseMessage: 'suc..

[프로그래머스] Lv.2 점프와 순간이동 - JAVA

문제OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈트는 건전지로 작동되는데, 순간이동을 하면 건전지 사용량이 줄지 않지만, 앞으로 K 칸을 점프하면 K 만큼의 건전지 사용량이 듭니다. 그러므로 아이언 슈트를 착용하고 이동할 때는 순간 이동을 하는 것이 더 효율적입니다. 아이언 슈트 구매자는 아이언 슈트를 착용하고 거리가 N 만큼 떨어져 있는 장소로 가려고 합니다. 단, 건전지 사용량을 줄이기 위해 점프로 이동하는 것은 최소로 하려고 합니다. 아이언 슈트 구매자가 이동하려는 거리 N이 주어졌을 때, 사용해야 하는 건전지 사용량의 최솟값을 return하는 s..

프로그래머스 2024.10.04

[프로그래머스] Lv.2 영어 끝말잇기 - JAVA

문제1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다.1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다.마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다.앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다.이전에 등장했던 단어는 사용할 수 없습니다.한 글자인 단어는 인정되지 않습니다.다음은 3명이 끝말잇기를 하는 상황을 나타냅니다.tank → kick → know → wheel → land → dream → mother → robot → tank위 끝말잇기는 다음과 같이 진행됩니다.1번 사람이 자신의 첫 번째 차례에 tank를 말합니다.2번 사람이 자신의 첫 번째 차례에 kick을 말합니다.3번 ..

프로그래머스 2024.10.04

[프로그래머스] Lv.2 예상 대진표 - JAVA

문제△△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행합니다. 각 게임에서 이긴 사람은 다음 라운드에 진출할 수 있습니다. 이때, 다음 라운드에 진출할 참가자의 번호는 다시 1번부터 N/2번을 차례대로 배정받습니다. 만약 1번↔2번 끼리 겨루는 게임에서 2번이 승리했다면 다음 라운드에서 1번을 부여받고, 3번↔4번에서 겨루는 게임에서 3번이 승리했다면 다음 라운드에서 2번을 부여받게 됩니다. 게임은 최종 한 명이 남을 때까지 진행됩니다.이때, 처음 라운드에서 A번을 가진 참가자는 경쟁자로 생각하는 B번 참가자와 몇 번째 라운..

프로그래머스 2024.10.04

[프로그래머스] Lv.2 카펫 - JAVA

문제Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.  제한사항갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.  입출..

프로그래머스 2024.09.09

[프로그래머스] Lv.2 삼총사 - JAVA

문제한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다.한국중학교 학생들의 번호를 나타내는 정수 배열 number가 매개변수로 주어질 때, 학생들 중 삼총사를 만들 수 있는 방법의 수를 return 하도록 solution 함수를 완성하세요.  제..

프로그래머스 2024.09.09