back end/java 48

java - Find a line in a file and remove it

파일에 다음과 같은 내용이 있습니다. aaa bbb ccc ddd 여기서 bbb를 삭제하는 방법은 다음과 같습니다. File inputFile = new File("myFile.txt"); File tempFile = new File("myTempFile.txt"); BufferedReader reader = new BufferedReader(new FileReader(inputFile)); BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); String lineToRemove = "bbb"; String currentLine; while((currentLine = reader.readLine()) != null) { // trim..

back end/java 2023.01.01

[Spring] MariaDB log4jdbc Cannot create JDBC driver error

Spring 또는 Spring boot에서 query log를 이쁘게 찍기 위해 log4jdbc를 사용합니다. 그런데 log4jdbc에서 다음과 같은 오류가 발생하는 경우가 있습니다. org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'net.sf.log4jdbc.sql.jdbcapi.DriverSpy' for connect URL 'jdbc:log4jdbc:mariadb://000:3306/db' 해결방법은 log4jdbc.log4j2.properties 파일에 다음과 같이 추가하면 됩니다. log4jdbc.drivers=org.mariadb.jdbc.Driver 이 내용은 MSSQL, Oracle은 해당되지 않..

back end/java 2022.12.22

spring 에서 cron scheduler 를 disable 하는 방법

Spring 또는 Spring boot를 사용하면서 batch 작업을 하기 위해 cron scheduler를 사용하는데요. 프로그램을 수정하지 않고 설정만으로 cron scheduler를 disable 해야 하는 경우가 있습니다. 1. cron 옵션 처리 당연한 말이지만 설정으로 cron을 disable 하려면 cron이 옵션처리가 되어있어야 합니다. 1.1. application.properties 설정 다음과 같이 application.properties에 옵션을 추가합니다. 이 설정은 매일 11시에 batch를 실행하라는 것입니다. config.cronExpression=0 0 11 * * * 1.2. @Scheduled annotation 변경 application.properties의 confi..

back end/java 2022.12.21

spring boot restful api에서 대용량 엑셀 다운로드

java excel download를 검색하면 많이 나오는 방식으로 엑셀 다운로드를 개발 때 다음과 같은 경우에 메모리 문제(out of memory)가 발생할 수 있습니다. 대용량 엑셀 다운로드가 발생할 경우 여러 명이 동시에 엑셀 다운로드를 할 경우 이번 포스팅에서는 Restful API에서 엑셀 다운로드하는 방법을 알아보겠습니다. Out of Memory(OOM)의 원인 1. 페이징 처리 Out of Memory가 발생하는 가장 흔한 원인은 페이징 처리입니다. 보통 엑셀 다운로드는 페이징 처리 없이 모든 데이터를 엑셀로 만들어야 합니다. 모든 데이터를 보기 위해 엑셀 다운로드를 하는 것이죠. 그래서 엑셀 다운로드 기능 개발 시, 페이징 처리 없이 모든 데이터를 한 번에 가져와서 처리합니다. 구글에서..

back end/java 2022.11.14

[java] 특정 범위 내에서의 임의의 정수 생성하는 방법

1. java 1.7 이상- 특정 범위 내에서의 임의의 정수 생성하는 방법 import java.util.concurrent.ThreadLocalRandom; int randomNum = ThreadLocalRandom.current().nextInt(min, max + 1); ThreadLocalRandom에 대한 자세한 내용은 공식 문서를 확인 바랍니다. 2. java 1.7 이전 - 특정 범위 내에서의 임의의 정수 생성하는 방법 import java.util.Random; public static int randInt(int min, int max) { Random rand; int randomNum = rand.nextInt((max - min) + 1) + min; return randomNum..

back end/java 2022.11.13

[java] class의 모든 field 가져오기 (private 포함)

개발을 하다 보면 프로그램 내에서 class안의 모든 변수명을 알아야 하는 경우가 있습니다. 물론 super class(부모 클래스)를 포함해서요. 다음과 같은 방법이 있습니다. 먼저, 방법을 알아보기 앞서 클래스를 생성합니다. public class ParentClass { private String field1; private String field2; private String field3; } public class ChildClass extends ParentClass { private String field4; private String field5; private String field6; public String field7; } 방법 1. getDeclaredFields()을 사용한 방법..

back end/java 2022.11.10

[java] hMailServer를 사용한 메일 전송 방법

Windows 이메일 서버 hMailServer 설치하는 방법 hMailServer는 Windows 전용 오픈소스(무료) 이메일 서버입니다. IMAP, POP3, SMTP등 다양한 이메일 프로토콜을 지원합니다. hMailServer는 자체적으로 MS SQL Compat Edition을 사용하여 데이터를 저장할 수도 있지 yjh5369.tistory.com Windows에 hMailServer를 설치했으니 이제 메일을 보내봐야 하는데요. java로 메일을 전송하는 방법은 다음과 같습니다. 저는 maven, gradle 중 gradle을 사용했는데, build.gradle에 다음과 같이 javax.mail을 추가합니다. implementation group: 'com.sun.mail', name: 'java..

back end/java 2022.11.09

[java] JSON string을 이쁘게 출력하는 방법 - json string pretty print

다음과 같이 User를 JSON string 형태로 변환할 때 다음과 같이 코드를 작성합니다. import lombok.Getter; import lombok.Setter; @Getter @Setter public class User { private String userId; private String name; private String email; } package com.example.demo; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; public class TestUtil { public static void main(String[] arg..

back end/java 2022.10.23

[Spring Boot] DB설정 없이 실행하는 방법

프로젝트명+Application 클래스에 다음 Annotation을 추가합니다. @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) 추가한 모습은 다음과 같습니다. import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfigura..

back end/java 2022.10.21

JPA에서 복합키를 사용하는 방법

JPA에서 복합키를 사용하는 방법 - 사전작업 먼저, 예제를 포스팅 하기 전에 다음 코드를 미리 작성합니다. @Entity @Getter @Setter @Table(name = "t_user") public class User { @Id private String userId; private String userName; } @Entity @Getter @Setter @Table(name = "t_user_group") public class UserGroup { @Id private String groupId; private String groupName; } 그다음 UserGroupMember라는 관계 테이블을 나타내는 Entity class를 생성합니다. @Data @Entity @NoArgsCon..

back end/java 2022.10.18
728x90
loading