[JAVA] 내부 resource 파일 활용하기
·
Java & Spring
개요 Java Spring Boot에서 프로젝트를 만들다 보면 엑셀 혹은 내부 json 파일을 읽고 return 하거나, static 파일들을 사용자가 직접 제공받을 수 있도록 web으로 열어두고 싶은 경우가 생긴다. 위 경우의 해결 방법과 주의할 점을 알아보자. 앱 내 활용 앱에서 resource로 사용할 파일들을 읽어서 return 하거나 재활용하기 위해서는 resource 폴더에 파일을 두고, ClassPathResource 클래스를 통해 가져다가 사용할 수 있다. 예시로 파일을 하나 만들어 필요한 내용을 기입하고 해당 파일의 내용을 읽어 반환할 수 있도록 구현해 보자. 먼저 test.json 파일을 만들어 아래 내용으로 작성한다. { "version": "v1", "template": [ {"ke..
[JAVA] LocalDate로 한국식 월 주차 구하기
·
Java & Spring
들어가기 전에 만약 Calendar 클래스를 사용하고 계신다면 아래 포스팅을 참고해 주세요 :) https://hojun-dev.tistory.com/entry/JAVA-Calendar-한국식-월-주차-구하기 [JAVA] Calendar로 한국식 월 주차 구하기 들어가기 전에 만약 LocalDate 클래스를 사용하고 계신다면 아래 포스팅을 참고해 주세요 :) https://hojun-dev.tistory.com/entry/JAVA-LocalDate-한국식-월-주차-구하기 [JAVA] LocalDate로 한국식 월 주차 구하기 들 hojun-dev.tistory.com 개요 매주 보고서 데이터를 엑셀로 출력하여 전달해야 하는 시스템을 만드는 등 특정 날짜가 몇 월의 몇 주차인지 계산해야 하는 경우가 있다...
[JAVA] Calendar로 한국식 월 주차 구하기
·
Java & Spring
들어가기 전에 만약 LocalDate 클래스를 사용하고 계신다면 아래 포스팅을 참고해 주세요 :) https://hojun-dev.tistory.com/entry/JAVA-LocalDate-한국식-월-주차-구하기 [JAVA] LocalDate로 한국식 월 주차 구하기 들어가기 전에 만약 Calendar 클래스를 사용하고 계신다면 아래 포스팅을 참고해 주세요 :) https://hojun-dev.tistory.com/entry/JAVA-Calendar-한국식-월-주차-구하기 [JAVA] Calendar로 한국식 월 주차 구하기 개요 hojun-dev.tistory.com 개요 매주 보고서 데이터를 엑셀로 출력하여 전달해야 하는 시스템을 만드는 등 특정 날짜가 몇 월의 몇 주차인지 계산해야 하는 경우가 있다..
[JAVA] Lombok Builder, SuperBuilder와 Generic 사용하기
·
Java & Spring
개요 Generic이 구성된 DTO에 Builder, SuperBuilder를 적용하면서 헤맸던 부분을 기록한다. Builder @ToString @Builder public class OuterDTO { private int id; private T inner; } 위와 같이 OuterDTO에 Generic을 구성하고, inner 필드에 들어갈 DTO는 아래와 같이 작성해 보자. @ToString 어노테이션은 테스트 시 출력 결과를 확인하기 위해 붙여두었다. @ToString @Builder public class InnerDTO { private String name; } 이후 아래와 같이 메소드를 구성하고 실행해 보자. 제네릭이 설정된 OuterDTO를 Builder로 적용할 때에는 builder(..
[Spring] JPA 중복 Insert 방지하기
·
Java & Spring
들어가기 전에 로드 밸런서를 통해 다중 서버를 구성하는 경우에는 아래 포스팅을 확인해 주세요 :) https://hojun-dev.tistory.com/entry/JAVA-JPA-다중-서버-환경-DB-동시성-문제-해결하기 [JAVA] JPA 다중 서버 환경 DB 동시성 문제 해결하기 개요 서비스를 운영하다 보면 동시성 문제에 의해 DB에 잘못된 업데이트가 발생하거나 중복 insert 등의 경우를 종종 마주칠 수 있다. 단일 서버라면 Java에서 제공하는 synchronized 블럭을 이용해서 hojun-dev.tistory.com 개요 서비스 로직을 구성하다 보면 고유번호를 제외하고도 고유한 값이 존재하는 컬럼을 구성하기 마련이다. (ex. 로그인 아이디) 이런 경우 해당 테이블에 그 고유한 값이 없으면..
[JAVA] poi에서 SXSSFWorkbook 사용 시 NullPointerException이 발생하는 경우
·
Java & Spring
들어가기 전에 엑셀 관련 추가적인 내용은 아래 포스팅에서 확인하실 수 있습니다. https://hojun-dev.tistory.com/entry/JAVA-POI-엑셀-오류 [JAVA] poi에서 엑셀을 다룰 때 발생하는 여러가지 오류 개요 사내 프로젝트를 개발할 때, 서식과 통계를 주로 다루는 시스템이다 보니 엑셀로 데이터를 다운로드하는 프로그램을 개발하는 경우가 많았다. 지금까지 Java poi 환경에서 엑셀을 다루며 오 hojun-dev.tistory.com 개요 대용량 데이터를 엑셀로 내보낼 때 Java POI에서는 XSSFWorkbook 대신에 SXSSFWorkbook을 사용한다. XSSFWorkbook은 메모리 상에 전체 엑셀 파일을 로딩하기 때문에 파일 크기가 큰 경우 OutOfMemoryEr..
[JAVA] poi에서 엑셀을 다룰 때 발생하는 여러가지 오류
·
Java & Spring
개요 내가 개발하는 프로젝트가 서식과 통계를 주로 다루는 시스템이다 보니 엑셀로 데이터를 다운로드하는 프로그램을 개발하는 경우가 많았다. 지금까지 Java poi 환경에서 엑셀을 다루며 오류 해결에 시간을 많이 쏟았다 보니 다시는 동일한 문제로 시간을 소비하고 싶지 않아 겪었던 오류들 중 자주 마주칠 수 있는 내용이거나 알아두면 좋은 내용들을 정리하고자 포스팅을 남기게 되었다. 먼저 엑셀을 다루기 위해 poi를 설치한다. 필자는 5.0.0 버전을 사용하였다. 참고로 2007년 이후의 엑셀을 대응하기 위해서는 poi-ooxml도 필수로 설치해주어야 한다. /* build.gradle */ // https://mvnrepository.com/artifact/org.apache.poi/poi implement..
[JAVA] JSON Array 형식의 문자열을 List 형식으로 변환하는 방법
·
Java & Spring
개요 사용자가 작성한 서식을 엑셀로 다운로드하는 부분을 개발하는데, 기존 프로젝트에는 QueryDsl에서 읽어 들일 때 JSON의 각 필드에 JSON_EXTRACT만 사용하여 나온 결과를 String 형식으로 저장 후 해당 문자열에 값이 있는지를 판별하는 식으로 작업되어 있었다. 중복 선택이 가능한 필드의 경우 배열에서 1 값을 찾을 때, "[1, 2]"라는 문자열 내에 "1"이라는 문자가 있는지 확인하는 방식이다. 해당 방식의 가장 큰 단점은 저장해야 할 값이 10 이상일 때 발생하는데, 0~9 내에서는 문자가 중복되지 않아 기능 상으로는 문제가 없으나 10 이상의 값이 생기면 1을 찾을 때 10이라는 값이 있어도 true를 반환하게 되는 등의 이슈가 발생한다. 프로젝트를 개발하는 과정에서 해당 경우가..