본문 바로가기

Back-End/Spring129

[Spring Security] CORS(Cross-Origin Resource Sharing) 설정 🍕 CORS(교차 출처 자원 공유)란? 요청을 받는 백엔드 쪽에서 이를 허락할 다른 출처들을 미리 명시하여 다른 출처 간에 리소스를 공유할 수 있도록 한다. 브라우저는 다른 출처끼리의 요청이 보내질 때 요청에 Origin이라는 header(데이터가 전송될 때 데이터의 맨 앞쪽에 붙은 보충 정보 - 받는 쪽의 IP 주소, 사용할 프로토콜이나 옵션 등)를 추가한다. Origin에는 요청하는 쪽의 scheme(요청할 자원에 접근할 방법인 프로토콜 http, ftp, telnet)과 도메인, 포트가 담긴다. https:// : scheme naver.com : 도메인 :443 : 포트 요청을 받은 서버는 답장의 헤더에 지정한 Access-Control-Allow-Origin 정보를 실어서 보낸다. 여기에 요청을.. 2022. 11. 6.
MapStruct 구현체의 분석과 DTO에서 필요한 Lombok 애너테이션 Mapper는 DTO 클래스와 엔티티 클래스를 서로 변환해 주는 변환자이다. 계층간 역할 분리를 위해 사용한다. Mapper의 한 종류인 MapStruct는 컴파일 타임에 매핑 구현체를 모두 생성한다. DTO를 Inner class로 관리하던 중에 각 Inner class에 어떤 Lombok 애너테이션을 붙여야 하는지 판단이 되지 않아서 DTO 클래스와 MapStruct가 생성하는 구현체 코드를 분석하여 정리했다. 🪄 MapStruct가 매핑을 정상적으로 하기 위한 우선 순위 조건 Builder 패턴이 적용된 경우 모든 필드를 파라미터로 가지는 생성자가 있을 경우 👉 이때 기본 생성자가 포함되어 있으면 제 역할을 하지 못한다. setter 메서드가 있는 경우 1. RequestBody → Member R.. 2022. 10. 20.
[솔로 프로젝트] To-do App 보호되어 있는 글 입니다. 2022. 10. 17.
[솔로 프로젝트] TodoList - Tomcat 수동 배포, Ngrok 터널링 프로그램 보호되어 있는 글 입니다. 2022. 10. 17.
[Spring WebFlux] Hello, Reactive | 명령형 프로그래밍과 선언형 프로그래밍 명령형 프로그래밍 vs 선언형 프로그래밍   코드가 어떤 식으로 실행되어야 하는지에 대한 구체적인 로직이 코드 안에 그대로 드러나는 명령형 프로그래밍 방식과는 달리 선언형 프로그래밍의 경우는 코드 상에 보이지 않는 내부 반복자가 존재한다.// 명령형for(int number : numbers){ if(number > 4 && (number % 2 == 0)){ sum += number; }}// 선언형int sum = numbers.stream() .filter(number -> number > 4 && (number % 2 == 0)) .mapToInt(number -> number) ... 2022. 10. 12.
[Spring WebFlux] 리액티브 프로그래밍 리액티브 시스템리액티브(Reactive)는 사전적으로 '반응을 하는', '반응을 보이는'라는 의미를 가진다. (리액션이 좋은 사람을 떠올려 보자!) 리액티브 시스템이란 클라이언트 요청에 반응을 잘하는 시스템을 의미한다. 이는 쓰레드의 Non-Blocking과 관련이 있다. 클라이언트의 요청에 대한 응답 대기 시간을 최소화하기 위해 요청 쓰레드가 차단되지 않게 함으로써 즉각적으로 반응할 수 있도록 구성된 시스템이다.  방법(MEANS): 리액티브 시스템에서의 커뮤니케이션 수단👉 메시지 기반 통신으로 여러 시스템 간 느슨한 결합을 유지형태(FORM): 메시지 기반 통신을 통해 어떤 특성을 가지는 구조로 형성되었는가?👉 Elastic: 시스템에 들어오는 요쳥량과 상관없이 일정한 응답성을 유지👉 Resil.. 2022. 10. 12.