Develop/JAVA 22

[Java] 엑셀파일 읽어서 값 수정 후 다시 엑셀 다운로드

Java에서 엑셀 파일을 읽고, 값을 추가한 후 다시 다운로드할 수 있도록 하는 기능을 구현하려면 Apache POI 라이브러리를 사용할 수 있습니다.다음과 같은 흐름으로 구현할 수 있습니다:사용자가 업로드한 Excel 파일을 Java에서 읽기특정 데이터를 추가하거나 수정수정된 Excel 파일을 클라이언트에 다시 제공 (다운로드)주요 라이브러리:Apache POI: Excel 파일을 읽고 쓰는 기능을 제공Spring Boot: 파일 업로드 및 다운로드 API 구현이제 코드를 작성해보겠습니다.생성 중단됨Java에서 Apache POI 라이브러리를 사용하여 Excel 파일을 읽고 값을 추가한 후 다시 다운로드할 수 있도록 하는 예제를 만들어보겠습니다.1. 필요 라이브러리 추가Maven 프로젝트라면 pom.x..

Develop/JAVA 2025.02.21

[Java] 특정 달의 마지막 날짜와 요일 구하기

1. YearMonth을 활용한 방법 (Java 8 이상)Java 8 이상에서는 java.time 패키지를 활용하면 간단하게 특정 달의 마지막 날짜와 요일을 구할 수 있습니다.import java.time.DayOfWeek;import java.time.YearMonth;import java.time.LocalDate;public class LastDayOfMonthExample { public static void main(String[] args) { int year = 2024; int month = 2; // 2월 // YearMonth 객체 생성 YearMonth yearMonth = YearMonth.of(year, month); ..

Develop/JAVA 2025.02.19

Spring Framework의 @Scheduled 어노테이션 완벽 가이드

Spring Framework는 애플리케이션에서 일정한 주기로 작업을 실행할 수 있도록 @Scheduled 어노테이션을 제공합니다. 이를 활용하면 크론(Cron) 작업이나 일정 시간 간격으로 실행되는 백그라운드 작업을 손쉽게 구현할 수 있습니다.이 글에서는 @Scheduled의 개념, 설정 방법, 다양한 사용법과 실용적인 예제를 소개합니다.1. @Scheduled란?@Scheduled 어노테이션은 특정 시간 간격이나 정해진 일정에 따라 메서드를 실행하도록 설정하는 Spring의 기능입니다.이를 활용하면 일정한 간격으로 데이터베이스를 정리하거나, 정기적인 알림을 전송하는 등의 기능을 쉽게 구현할 수 있습니다.2. @Scheduled 사용을 위한 설정@Scheduled 어노테이션을 사용하려면 Spring의 ..

Develop/JAVA 2025.02.14

[Java] REST API 호출 및 JSON 데이터를 DTO로 파싱하는 방법

REST API를 호출하여 리턴받은 JSON 데이터를 Java DTO로 파싱하는 방법을 알아보겠습니다. 이번 예제는 JSON 데이터가 2-Depth 구조를 가지며, DTO 내부에 또 다른 DTO를 포함하는 구조를 가정합니다.1. 준비 사항REST API 호출과 JSON 파싱을 위해 다음 라이브러리를 사용합니다:HttpClient (Java 11+ 기본 제공)Jackson 라이브러리 (com.fasterxml.jackson) com.fasterxml.jackson.core jackson-databind 2.15.2 2. JSON 데이터 예시아래와 같은 JSON 데이터를 REST API로부터 받는다고 가정합니다.{ "id": 1, "name": "John Doe", "address": ..

Develop/JAVA 2025.01.08

[Java] 메모리 관리 및 가비지 컬렉션: 개념과 예제

Java는 개발자가 직접 메모리를 관리하지 않고, JVM(Java Virtual Machine)이 메모리를 자동으로 관리합니다. 이를 통해 메모리 누수(Memory Leak)와 같은 문제를 줄이고 안정적인 프로그램을 개발할 수 있습니다. Java의 메모리 관리와 가비지 컬렉션에 대한 구체적인 개념과 동작 원리를 이해하면, 효율적인 코드 작성과 최적화를 도울 수 있습니다.Java 메모리 구조Java의 메모리는 크게 다음과 같은 영역으로 나뉩니다:Heap객체와 인스턴스 변수들이 저장됩니다.GC(Garbage Collector)에 의해 관리됩니다.Young Generation, Old Generation, 그리고 Permanent Generation/Metaspace로 나뉩니다.Stack각 스레드에서 실행 중..

Develop/JAVA 2024.11.17

[Java] 오늘날짜 구하기 날짜 더하기 빼기

아래는 Java에서 날짜 형식을 사용자가 지정할 수 있도록 수정한 코드입니다. DateTimeFormatter를 사용해 날짜 형식을 지정할 수 있으며, 날짜 연산 시에도 지정된 형식을 유지하면서 출력할 수 있습니다.import java.time.LocalDate;import java.time.format.DateTimeFormatter;import java.time.temporal.ChronoUnit;public class DateExample { // 오늘 날짜 구하기 (사용자 지정 형식) public static String getToday(String format) { LocalDate today = LocalDate.now(); DateTimeFormat..

Develop/JAVA 2024.11.14

[Java] 크로스 사이트 스크립트 (XSS) 취약점 조치방법

크로스 사이트 스크립트 (XSS)란 무엇인가?**크로스 사이트 스크립트(XSS)**는 공격자가 악성 스크립트를 웹 사이트에 삽입하여 사용자 브라우저에서 실행되게 하는 공격 방식입니다. 이로 인해 사용자의 세션, 쿠키, 로컬 스토리지 정보 등을 탈취할 수 있으며, 피싱, 키로깅 등의 악성 행위가 가능해집니다.왜 XSS 취약점을 조치해야 하는가?XSS 공격을 방치할 경우 사용자 데이터 유출, 계정 탈취, 악성 스크립트 실행 등의 보안 위험이 발생할 수 있습니다. 따라서 웹 애플리케이션에서는 XSS 취약점을 미리 방지하는 조치가 필요합니다.XSS 방지 방법Java에서는 다음과 같은 방법으로 XSS를 방지할 수 있습니다.입력 값 검증: 사용자 입력을 검증하고 불필요한 특수 문자를 제거하여 안전하게 처리합니다.출..

Develop/JAVA 2024.10.30

[Spring Framework] application.yml 파일에서 값 암호화

1. Jasypt란?Jasypt(Java Simplified Encryption)는 자바 애플리케이션에서 민감한 정보를 쉽게 암호화하고 복호화할 수 있는 라이브러리입니다. 이를 활용하여 Spring Framework의 application.yml 파일 내의 비밀번호와 같은 민감한 데이터를 안전하게 보호할 수 있습니다.2. 설정 단계Step 1. Jasypt 라이브러리 의존성 추가우선, Jasypt를 사용하기 위해 프로젝트에 해당 라이브러리를 추가해야 합니다. Maven 또는 Gradle 프로젝트에 따라 pom.xml 또는 build.gradle 파일에 다음과 같이 추가하세요.Maven: com.github.ulisesbocchio jasypt-spring-boot-starter 3.0.4..

Develop/JAVA 2024.10.28

[Java] Spring Security 에서 SameSite 설정방법 (PG사 결제 시 리턴 후 세션 끊김현상 해결)

1. Spring Security를 사용하는 방법Spring Security를 사용하는 경우 HttpSession의 쿠키 속성에 SameSite 옵션을 추가할 수 있습니다. SameSite 속성은 기본적으로 Strict, Lax, 또는 None으로 설정할 수 있습니다.Spring Security에서 SameSite 설정하기Spring Security의 CookieSerializer를 설정하여 SameSite 속성을 지정할 수 있습니다.import org.springframework.context.annotation.Bean;import org.springframework.security.config.annotation.web.builders.HttpSecurity;import org.springframe..

Develop/JAVA 2024.10.24

[Java] BigDecimal 나누기 소수점 올림, 버림, 반올림 사용방법

BigDecimal의 필요성float 또는 double 타입은 부동소수점 방식을 사용하기 때문에, 소수점 연산 시 오차가 발생할 수 있습니다. 이를 해결하기 위해 BigDecimal은 고정 소수점 연산을 제공하며, 소수점 이하 자릿수의 처리를 정확하게 제어할 수 있는 기능을 제공합니다.특히 BigDecimal로 나눗셈을 할 때, 소수점 처리를 어떻게 할 것인지에 대한 설정을 해야 합니다. 이때 사용할 수 있는 방식은 올림, 버림, 반올림입니다.1. 기본적인 BigDecimal 나눗셈BigDecimal의 divide() 메소드는 두 숫자를 나눌 때 소수점 처리 방식을 선택할 수 있습니다. RoundingMode를 이용하여 나눗셈 결과의 소수점 처리를 정의할 수 있습니다.import java.math.Big..

Develop/JAVA 2024.10.21