전체 글(593)
-
JDK18 한글 인코딩 문제
배경 Windows 10의 인텔리제이 환경에서 자바 언어 컴파일시 한글이 깨지는 문제가 발생하였습니다. 문제원인 프로젝트의 JDK 버전을 JDK18로 설정하였습니다. 해결방법 JDK 버전을 JDK15로 변경
2023.02.06 -
[SpringBoot] 데이터베이스 마이그레이션(Database Migration)
1. 데이터베이스 마이그레이션이란 무엇인가 데이터베이스 마이그레이션이란 데이터베이스 스키마의 버전을 관리하기 위한 하나의 방법(데이터 전환)입니다. 개발 시스템에는 데이터베이스 스키마가 변경되었지만, 운영시스템의 데이터베이스 스키마가 변경되지 않았을 경우 마이그레이션을 수행합니다. 작게는 프로젝트 상 테이블 생성 및 변경 작업부터, 하나의 애플리케이션 또는 시스템을 옮기는 것까지 마이그레이션입니다. 요구사항에 따라 애플리케이션과 스키마가 바뀌었지만 개발 과정에는 적용됬지만 운영환경에는 적용되지 않아 데이터베이스 전환 시 애를 먹는 경우가 있습니다. 데이터베이스 마이그레이션은 이러한 문제를 해결합니다. 데이터베이스 마이그레이션은 개별 SQL 파일을 MySQL 콘솔 등에서 직접 실행하지 않고 프레임워크의 특..
2022.12.22 -
[SpringBoot] 스프링부트, mysql 데이터베이스 연결
1. 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-jdbc' implementation 'mysql:mysql-connector-java' 2. docker container를 사용한 MySQL 추가 우분투 운영체제에 다음과 같은 docker 명령어를 실행하여 mysql 컨테이너를 생성하여 실행시킵니다. $ docker run -p 3306:3306 —name mysql_boot -e MYSQL_ROOT_PASSWORD=1 -e MYSQL_DATABASE=springboot -e MYSQL_USER=yonghwan -e MYSQL_PASSWORD=pass -d mysql mysql_boot 컨테이너에 bash를 실행하여 들어갑니..
2022.12.22 -
[docker] mysql conatiner 생성시 포트포워딩 문제
배경 docker 엔진을 사용하여 mysql container를 생성하기 위해 다음과 같은 명령어를 실행하였습니다. $ docker run -p 3306:3306 —name mysql_boot -e MYSQL_ROOT_PASSWORD=1 -e MYSQL_DATABASE=springboot -e MYSQL_USER=yonghwan -e MYSQL_PASSWORD=pass -d mysql 위 명령어의포트 포워딩 설정은 호스트 시스템에서 3306번 TCP 포트로 유입되는 트래픽은 모두 도커 컨테이너의 3306번 TCP 포트로 전달된다는 의미입니다. 문제 위 명령어를 수행시 다음과 같은 결과가 나왔습니다. Error response from daemon: Ports are not available: exposi..
2022.12.21 -
[SpringBoot][WebMVC] CORS(Cross-Origin Resource Sharing) 적용
1. SOP와 CORS란 무엇인가? SOP(Same-Origin Policy) 동일 출처 정책(SOP, Same-Origin Policy)은 어떤 Origin에서 가져온 리소스와 상호작용하는 것을 제한하는 보안 방식입니다. 동일 출처 정책은 잠재적으로 해로울 수 있는 문서를 분리함으로써 공격받을 수 있는 경로를 줄여줍니다. CORS(Cross-Origin Resource Sharing) SOP를 우회하기 위한 표준기술입니다. SOP와 CORS 모두 웹 브라우저가 지원하는 기술입니다. SOP는 같은 Origin에만 요청을 보낼 수 있지만 CORS는 서로 다른 Origin끼리 리소스를 공유할 수 있는 기술입니다. 그래서 Cross-Origin 요청을 하기 위해서는 서버의 동의가 필요합니다. 만약 서버가 Cr..
2022.12.15 -
[SpringBoot][WebMVC] Hateoas
HATEOAS(Hypermedia As The Engine Of Application State)란 무엇인가 REST API를 사용하는 클라이언트가 전적으로 서버와 동적인 상호작용이 가능하도록 하는 것 클라이언트가 서버로부터 어떠한 요청을 할 때, 요청에 필요한 URL를 응답에 포함시켜 반환하는 것으로 가능하게 할 수도 있음 REST API 정의 웹 애플리케이션이 제공하는 각각의 데이터를 리소스, 즉 자원으로 간주하고 각각의 자원에 고유한 URI(Uniform Resource Identifier)를 할당함으로써 이를 표현하는 API를 정의하기 위한 소프트웨어 아키텍처 스타일입니다. REST API 구현 단계 잘 설계된 REST API의 마지막 단계가 HATEOAS HATEOAS라는 개념을 통해 자원에 호..
2022.12.13