반응형

전체 글 91

Spring에서 CORS 설정하기

웹 개발의 세계에서 CORS(Cross-Origin Resource Sharing)는 필수적인 개념이다. 다양한 출처에서 오는 요청을 처리해야 하는 현대 웹 애플리케이션에서 CORS 설정은 보안과 자원 공유의 균형을 맞추는 데 중요한 역할을 한다. 이 글에서는 Spring Framework에서 CORS를 설정하는 세 가지 방법을 소개한다. 1. @CrossOrigin 어노테이션 사용 가장 간단하고 직관적인 방법은 @CrossOrigin 어노테이션을 사용하는 것이다. 이 어노테이션을 컨트롤러 클래스나 메소드에 적용할 수 있다. 예를 들어, 특정 출처에서 오는 요청만을 허용하고 싶다면 다음과 같이 설정한다. @RestController @RequestMapping("/api") public class MyC..

IT/Java 2024.01.23

Effective java: 생성자 대신 정적 팩터리 메서드 요약

많은 개발자들이 객체를 생성할 때 주로 생성자를 사용한다. 하지만 정적 팩터리 메서드라는 또 다른 훌륭한 방법이 존재한다. 먼저, 전통적인 생성자 방식을 살펴보자. '음료' 클래스를 예로 들어보겠다. public class Beverage { private String type; private boolean isCold; public Beverage(String type, boolean isCold) { this.type = type; this.isCold = isCold; } // ... 기타 메서드 } 여기서 `Beverage` 클래스는 하나의 생성자를 가지고 있다. 사용자는 이 생성자를 통해 '음료' 객체를 생성할 수 있다. 예를 들어, 뜨거운 커피를 만들고 싶다면 다음과 같이 사용할 수 있다. B..

IT/Java 2024.01.23

MYSQL, MSSQL INSERT INTO ... SELECT 구문

INSERT INTO ... SELECT 구문을 활용하여 데이터를 한 테이블에서 다른 테이블로 쉽게 이동하는 방법 시나리오 설명 상상해보죠, 우리에게는 employees와 former_employees 두 개의 테이블이 있다고 합니다. employees 테이블은 현재 직원들의 정보를, former_employees는 이전 직원들의 정보를 저장합니다. 이제, 우리의 목표는 employees 테이블에서 특정 조건을 만족하는 직원들을 former_employees 테이블로 이동시키는 것입니다. 테이블 구조 employees id: 직원 ID name: 이름 department: 부서 hire_date: 고용 날짜 former_employees id: 직원 ID name: 이름 department: 부서 end..

IT/DB 2024.01.21

Integer와 Long의 차이점

프로그래밍에서 정수를 다룰 때 Integer와 Long은 가장 흔히 사용되는 두 타입입니다. 이들은 자바를 비롯한 여러 프로그래밍 언어에서 정수 값을 저장하는 데 사용되며, 각각 고유의 특성과 사용 사례를 가지고 있습니다. Integer란? Integer는 32비트 정수를 저장하는 데이터 타입입니다. 이는 -2,147,483,648부터 2,147,483,647까지의 범위를 포함합니다. Integer는 4바이트의 메모리 공간을 사용하며, 일반적인 수치 계산에 널리 사용됩니다. 작은 수치를 다룰 때는 Integer가 메모리 효율성과 성능 면에서 유리합니다. Long이란? 반면에 Long은 64비트 정수를 저장하는 데이터 타입으로, -9,223,372,036,854,775,808부터 9,223,372,036,..

IT/Java 2024.01.20

스프링 부트: 윈도우와 맥에서 한글 파일명 다운로드 문제 해결하기

문제 상황 스프링 부트(Spring Boot) 기반의 웹 애플리케이션에서 파일 다운로드 기능을 구현할 때, 맥(MacOS)에서는 한글 파일명이 정상적으로 다운로드되지만, 윈도우(Windows)에서는 한글 파일명이 깨지는 문제를 경험했습니다. 이는 운영 체제 간의 문자 인코딩 처리 방식의 차이 때문에 발생하는 일반적인 문제입니다. 해결 방법 이 문제를 해결하기 위해, 한글 파일명을 UTF-8 인코딩으로 처리한 후, ISO-8859-1로 다시 인코딩하는 방식을 사용했습니다. 또한, Content-Disposition 헤더를 적절히 설정하여 브라우저가 파일명을 올바르게 해석하도록 했습니다. 구현 코드 다음은 파일 다운로드를 처리하는 스프링 부트 컨트롤러의 일부 코드입니다: try { // 파일 데이터 조회 R..

IT/Java 2024.01.20
반응형