Backend/Spring

·Backend/Spring
최근 운영 중인 플랫폼에서 JPA의 LocalDate 필드(환자 생일, 결제 요청일)가 하루씩 내려가는 문제가 발생했습니다. 이 문제의 원인과 해결 과정을 공유합니다. 문제 상황문제 증상LocalDate 필드(환자 생일, 결제 요청일)의 날짜가 하루씩 내려갑니다.예: 1997-03-25 → 1997-03-24 → 1997-03-23... 로그 확인환자 생일을 수정한 API 호출 이력이 없습니다.결제 요청일은 클라이언트에서 수정할 방법이 제공되지 않았습니다.LocalDate 필드만 문제가 발생하며, LocalDateTime은 정상적으로 동작하고 있었습니다. 타임존 확인백엔드 서버의 JVM 타임존과 DB의 타임존을 확인한 결과 모두 한국(Asia/Seoul)으로 설정되어 있었습니다.@SpringBootApp..
·Backend/Spring
최근 프로젝트에서 Spring Batch를 사용하여 데이터를 처리하는 과정에서 새로운 요구사항이 발생했어요.기존에는 Chunk 방식으로 Reader → Processor → Writer를 통해 테이블 정보를 수집하고 처리했는데, 내부 프로세스의 새로운 요구사항에 맞추기 위해 기존 기능은 유지하면서도 Chunk 방식을 Tasklet으로 전환하여 upsert를 처리해야 했어요. Upsert 란?데이터베이스에 존재하지 않는 경우 삽입하고, 존재하는 경우 업데이트하는 방식이에요. 기존 Chunk 방식 @JobScope @Bean public Step tabCurrStep() throws Exception { return new StepBuilder("tabCurrStep", jobR..
·Backend/Spring
스프링 부트 테스트 실행 시 업로드 된 파일도 롤백 시점 사라질까?? 스프링 부트 테스트는 @Transactional 을 테스트 케이스에 선언 시 테스트 완료 후 항상 롤백을 하여, 다음 테스트에 영향을 주지 않는다. (물론 rollback false 지정하는 설정이 있음) 하지만 테스트 실행시 생성된 파일은 데이터 롤백 이후에도 그대로 남아있다. 파일 업로드 후 업로드된 파일을 삭제하는 테스트 코드를 작성해보자 먼저 아래를 보면 파일 업로드 테스트를 위한 파일 정보를 저장하는 엔티티가 있다. @Getter @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(name = "attach_file") public class AttachFile..
·Backend/Spring
파일 업로드 기능을 통해 전달받은 파일 객체를 다루기 위해서는 VO 클래스 내에 MultipartFile 타입 변수와 Getter/Setter 정의 필수 태그의 ‘name’ 속성과 동일한 변수명을 사용해야함 가상 업로드 경로에 대한 실제 업로드 경로 알아내기 @PostMapping(value = "/BoardWritePro.bo") public String writePro(@ModelAttribute BoardVO board, Model model, HttpSession session) { // 주의! 파일 업로드 기능을 통해 전달받은 파일 객체를 다루기 위해서는 // BoardVO 클래스 내에 MultipartFile 타입 변수와 Getter/Setter 정의 필수! // => input type="f..
·Backend/Spring
스프링 프레임워크란? 자바 플랫폼을 구현하기 위한 오픈 소스 프레임워크 프레임워크(Framework)? 프로그램을 구현하는데 필요한 라이브러리(클래스) 및 개발 방식의 모음 다양한 어플리케이션을 개발하기 위해 필요한 코드들의 자동화가 많이 이루어짐 동적 웹사이트 개발을 위한 서비스 제공(JSP 가 없어도 동적 서비스 구현 가능) 스프링 프레임워크에서 동적 웹 구현 시에도 MVC(Spring MVC) 사용 기존 동적 웹 어플리케이션을 스프링으로 구현 시 훨씬 압축된 코드를 사용하여 간편하게 구현 가능 단, 압축된 코드 사용을 위한 준비 작업(설정)이 많음 대한민국 정보 관련 프로젝트를 진행하는 기업 등에서 주로 사용하는 ‘전자정부 표준 프레임워크’ 의 기반이 되는 프레임워크 스프링 프레임워크 사용방법 이클..
·Backend/Spring
Spring의 파라미터 처리방식과 포워딩 방식을 공부하며 요약 정리 @Controller public class TestController {} "main" 이라는 서블릿 주소 요청 시 자동으로 호출되는 requestMain() 메서드 정의 @RequestMapping 어노테이션을 사용하여 GET 방식의 "main" 서블릿 주소 요청 받아 처리 @RequestMapping(value = "main", method = RequestMethod.GET) public String requestMain() { return "main"; // "/WEB-INF/views/main.jsp" 페이지로 이동하도록 요청 } "push" 서블릿 주소 요청 시 자동으로 호출되는 push() 메서드 정의 => 파라미터 : 없..
dami97
'Backend/Spring' 카테고리의 글 목록