[Spring] CORS 이란? CORS 에러 해결방법
·
Spring
프로젝트를 할때마다 CORS 설정을 해주고 있지만 매번 CORS 에러를 만나는게 정확한 이해없이 사용하고 있는 것 같아 한번 정리하고 넘어가려고 합니다.CORS 란?CORS란 Cross Origin Resource Sharing의 약자로 출처가 다른 리소스들을 공유하는 것을 의미합니다. 여기서 출처란 프로토콜, 호스트, 포트로 구성된 서버 위치를 의미하는데 두 리소스들 간에 프로토콜, 호스트, 포트 중 하나만 달라도 다른 리소스에서 요청을 보냈을 때 CORS 에러가 발생합니다. ex) https://spring.io:8080 프로토콜 : https, http호스트 : spring.io포트 : 8080그렇다면 왜 이처럼 출처가 다른 리소스의 요청을 막는 것일까?출처가 다른 리소스를 공유하여 브라우저를 실행..
[Spring] 비동기 통신과 데이터 동기화를 위한 카프카 활용 (1)
·
Spring
2023.03.19 - [Spring] - [Spring] MSA 프로젝트 만들기 (1) [Spring] MSA 프로젝트 만들기 (1)2023.02.28 - [Server] - [Spring] 마이크로서비스 아키텍쳐 (Micro Service Architecture, MSA) [Spring] 마이크로서비스 아키텍쳐 (Micro Service Architecture, MSA) 이번에 블록체인 기반의 프로젝트를 진행하게 되었는데keylog.tistory.com이전에 MSA 프로젝트를 개발 할때 OpenFeign 라이브러리를 사용하여 동기 방식으로 마이크로 서비스들 간에 내부 통신을 구현했는데 이제 비동기 방식으로 통신하고 동일한 기능을 가진 마이크로 서비스들 간에 데이터를 동기화 하기 위해 카프카에 대해서 ..
[JPA] deleteAll() 수행 후 바로 insert 했을 때 duplicate entry 에러가 발생하는 문제
·
JPA
프로젝트를 진행하면서 아래와 같은 로직을 작성했었습니다. 백준 이메일을 수정했을때 데이터베이스에 저장된 수정되기 전 백준 이메일로 푼 문제 리스트를 전부 삭제한 후 수정할 이메일로 푼 문제리스트를 다시 저장하는 로직입니다.  @Override@Transactionalpublic GithubBaekjoonResponseDto updateGithubAndBaekjoon(Long userId, GithubBaekjoonRequestDto requestDto) { User user = getUser(userId); user.updateEmail(requestDto.getGithub(), requestDto.getBaekjoon()); solvedacRepository.deleteAllByUser..
[Git] git stash, git stash pop
·
Git
https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Stashing%EA%B3%BC-Cleaning Git - Stashing과 Cleaning 작업하던 저장소가 완전 지저분해져서 Git에게 진짜로 강제로 정리하도록 해야 하는 경우가 생길 수 있다. 예를 들어 Git 버전관리 데이터가 포함된 디렉토리를 복사해왔거나 서브모듈 디렉토리 git-scm.com 팀 프로젝트를 진행하는데 깜빡하고 브랜치를 안만들고 develop 브랜치에서 작업을 했다... 당황해하고 있었는데 팀원이 git stash 라는 명령어를 알려주었고 해당 명령어를 통해서 문제를 쉽게 해결할 수 있었다. Stash는 Modified이면서 Tracking 되는 파일들과 Staging Area 즉 g..
[JPA] 벌크성 수정 쿼리
·
JPA
이번에 팀 프로젝트를 진행하면서 findAll() 메서드를 사용하여 리스트를 조회한 뒤 JPA 영속성 컨텍스트의 변경 감지기능을 사용해서 특정 조건의 데이터를 모두 업데이트 해주는 서비스 메서드를 구현했었습니다. 구현이 끝나고 테스트해보니 기능은 잘 동작하였지만 업데이트 되는 데이터 수만큼 쿼리가 나가고 있었습니다. 이런 상황을 해결하기 위해 JPA는 벌크성 수정을 효율적으로 수행할 수 있도록 지원해주고 있습니다.MemberRepositoryJPA에서 벌크성 업데이트를 수행하기 위해서는 Repository 클래스에서 @Query 어노테이션을 사용해서 update 쿼리를 작성하여 사용합니다. MemberRepository 클래스에 아래와 같은 메서드를 작성한 후 동일한 테스트를 실행하면 이번에는 업데이트..
[Spring] MSA 프로젝트 만들기 (3)
·
Spring
2023.03.22 - [Spring] - [Spring] MSA 프로젝트 만들기 (2) [Spring] MSA 프로젝트 만들기 (2)2023.03.19 - [Spring] - [Spring] MSA 프로젝트 만들기 (1) [Spring] MSA 프로젝트 만들기 (1) 2023.02.28 - [Server] - [Spring] 마이크로서비스 아키텍쳐 (Micro Service Architecture, MSA) [Spring] 마이크로서비스 아키텍쳐 (Microkeylog.tistory.com이전 글에서 gateway-service에서 Custom Filter를 구현하여 권한이 필요한 요청에 인증된 회원의 요청만 전달되도록 하는 방법과 Spring Cloud Gateway에서 CORS 설정을 하는 방법에 ..
[Spring] MSA 프로젝트 만들기 (2)
·
Spring
2023.03.19 - [Spring] - [Spring] MSA 프로젝트 만들기 (1) [Spring] MSA 프로젝트 만들기 (1)2023.02.28 - [Server] - [Spring] 마이크로서비스 아키텍쳐 (Micro Service Architecture, MSA) [Spring] 마이크로서비스 아키텍쳐 (Micro Service Architecture, MSA) 이번에 블록체인 기반의 프로젝트를 진행하게 되었는데keylog.tistory.com이전 글에서 gateway 프로젝트와 micro service 프로젝트를 생성하고 이를 Eureka Server에 등록하는 방법에 대해 알아보았습니다. 이번 글에서는 모든 클라이언트의 요청이 지나는 gateway-service에서 Custom Filte..
[Spring] MSA 프로젝트 만들기 (1)
·
Spring
2023.02.28 - [Server] - [Spring] 마이크로서비스 아키텍쳐 (Micro Service Architecture, MSA) [Spring] 마이크로서비스 아키텍쳐 (Micro Service Architecture, MSA)이번에 블록체인 기반의 프로젝트를 진행하게 되었는데 팀원들과 MSA 방식으로 프로젝트를 개발해보자는 얘기가 나와서 개발에 들어가기 전에 MSA가 뭔지 모놀리식 방식과는 어떤 차이가 있는지keylog.tistory.com이전 글에서 MSA가 뭔지 모놀리스 아키텍처 방식과는 어떤 차이점이 있는지 알아봤는데 이번글에서는 인프런 강의인 Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) 에서 배운 내용으로간단한 MSA 프로젝트를 만들고 마이크로 서비스들 간..