분류 전체보기 474

[Spring] WebClient 사용방법 가이드

아래의 글 순서대로 읽으시면 해당 글을 이해하시는데 족흠 도움이 됩니다 🙏 ⚙️ Block, Non-Block, sync(동기), Async(비동기) 의 간단한 개념 [Spring] Webclient 란❓ (RestTemplate vs WebClient) [Spring] WebClient 사용방법 가이드 (now) [spring] WebFlux란 + Reactor 객체란 (Mono 와 Flux) 저번 포스팅에 이어서 WebClient 사용방법에 대해 공부해보겠습니다. 📌 Spring WebClient 사용하기 공식문서에 나온내용을 토대로 해석해놓은 블로그글이 굉장히 많기 때문에 공식문서를 하나씩 보기보다는, 간단한 사용방법과 제가 어려웠던 부분을 토대로 정리를 해보겠습니다. 1) WebClient 종속성..

Spring/Spring Boot 2022.11.23

🚀 Spring Request DTO 추상클래스로 받아오기 (까지의 트러블 슈팅..😂)

이번 포스팅은 스프링에서 Client 에서 받는 Json 데이터를, 조건에 따라 다른 유효성 검사를 하기위한 과정에서의 트러블 슈팅 기록입니다.. ➡️ 상황 사내에서, 쿠폰 정책에 따라 각각의 쿠폰을 등록할 떄, 필요한 조건이 달라졌기 때문에 기존의 단일 유효성 검사에서, 어떤 쿠폰이냐에 따라서 Custom 한 Validation 을 적용해야하는 상황이였습니다. [문제 직면부터 시도과정] @RequestBody 로 받아오는 DTO 클래스 생성자에 throw Exception ➡️ 내가 던진 Exception 이 아닌 예상치 못한 `Json Parse Error : HttpMessgeException` 이 던져지고, `ClassCastException`이 터짐.. 문제 해결 후, 확장성을 고려하여 DTO ..

Spring/Spring Boot 2022.11.17

[Spring] Webclient 란❓ (RestTemplate vs WebClient)

아래의 글 순서대로 읽으시면 해당 글을 이해하시는데 족흠 도움이 됩니다 🙏 ⚙️ Block, Non-Block, sync(동기), Async(비동기) 의 간단한 개념 [Spring] Webclient 란❓ (RestTemplate vs WebClient) (now) [Spring] WebClient 사용방법 가이드 [spring] WebFlux란 + Reactor 객체란 (Mono 와 Flux) 📗 이번 포스팅에서는, Spring 에서 외부 API 와 통신하는 WebClient 에 대해서 공부해보고자 합니다...!!!! 옛날 글에서 간단하게 Spring RestTemplate 에 대해서 잠깐 공부한적이 있는데 Spring 5.0 부터는 WebClient를 권장하고 추후부터 RestTemplate 는 de..

Spring/Spring Boot 2022.11.08

⚙️ Block, Non-Block, sync(동기), Async(비동기) 의 간단한 개념

아래의 글 순서대로 읽으시면 해당 글을 이해하시는데 족흠 도움이 됩니다 🙏 ⚙️ Block, Non-Block, sync(동기), Async(비동기) 의 간단한 개념 (now) [Spring] Webclient 란❓ (RestTemplate vs WebClient) [Spring] WebClient 사용방법 가이드 [spring] WebFlux란 + Reactor 객체란 (Mono 와 Flux) https://www.youtube.com/watch?v=IdpkfygWIMk 해당 테크톡 정리 글!! [용어 약속] 제어권의 반환 반환 - 제어권의 반환 결과값의 전달 함수의 return 값 Block 과 Non-Block Block 과 Non-Block 의 요지는 제어권에 있습니다. 제어권이란 행동할 수 있는..

[Junit] Test Fixture 란 ❓

Test Fixture 의 이해를 위한 글입니다. Test Fixtures 개념을 실제로 사용하는 2가지 방법을 다룹니다. 코드는 ⚙️ Github 에 있습니당!! Test Fixture 란 일종의 개념이라고 생각합니다. 중복 발생되는 무언가(행위)를 고정시켜 한곳에 관리하도록 하겠다는 개념. Test Fixture 를 사용 예시 금액과 나라를 가지고있는 Money 객체가 있다고 해봅니다. @Getter @AllArgsConstructor @EqualsAndHashCode public class Money { private int money; private String country; /** 돈 더하기 **/ public Money add(Money anotherMoney) { checkOrigin(an..

[Spring DB 1편] (3) 트랜잭션의 이해

인프런 김영한 - 스프링 DB 1 강의를 듣고 정리한 글 입니다. 목차 1. 트랜잭션이란 트랜잭션(Transaction)을 이름 그대로 번역하면 거래라는 뜻입니다. 이것을 풀어 이야기하면, 데이터베이스에서 트랜잭션은 하나의 거래를 안전하게 처리하도록 보장해주는 것을 뜻합니다. 모든 작업이 성공해서 데이터베이스에 정상 반영하는 것을 커밋(Commit)이라 하며, 작업 중 하나라도 실패해서 거래 이전으로 되돌리는 것을 롤백(Rollback)이라고 합니다. 2. 트랜잭션 특징 (ACID) 트랜잭션은 ACID라 하는 4가지 특징을 보장해야합니다. 원자성 (Actomicity) : 트랜잭션 내에서 실행한 작업들은 마치 하나으 ㅣ작업인 것처럼 모두 성공하거나 모두 실패해야한다. 일관성 (Consistency) : ..

[Spring] 로그 프레임워크와 로그백이란 - 로깅에 대해 알아보자

이번 포스팅은, CS 요청건 처리 시, 과거 이력을 확인해야할 때, 로그를 효율적으로 남기지 못해 명확한 결과를 전달하지 못한 아쉬운 경험을 토대로 Spring Boot 를 이용하여 로깅을 설정해보기위한 시도 글입니다..ㅠ 실스코드 Github 📌 하고싶은 것 spring 으로 서버를 띄울 시 로그에, 요청 들어온 "API Method, API 주소, 요청 응답값" 을 로그로 찍고싶었다. 📌 현재 현재는 default 로, sql 문과 hibernate 쿼리만 로그로 나오는 상황입니다. 📌 시도해 볼 것 및 키워드 logback-spring.xml 과 interceptor, 혹은 aop 를 이용해 요청을 가로체서 로그 남기기 🙏 내용이 길어져서 Spring로깅 인터페이스와, 구현체 및 로그백 설정에 대해..

Spring/Spring Boot 2022.10.24

spring swagger "/error" 해결하기

요청 로그와 응답 로그를 수정해서 요청하는 api 를 볼 수 있도록 수정했더니 아래와 같이, 끔찍한 에러로그가 발견되었다. 이게 응답 api를 인터셉터해서 로그 출력을해서 이런건지 아니면 원래 계속 error 응답을 보냈던건지 알수 없지만 swagger 에서 어떤 요청을 하고 그에 대한 에러 페이지를 걔속 보여주는 현상이 발견되었다. 📌 문제상황 HTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" "-" 220.76.132.249 - - [13/Oct/2022:13:55:27 +0900] "도메인.com/" "GET /null/swagger-resources/configuration/security HTTP/1.1" 401 201 "http://도메인/swagger-..

Spring/Spring err 2022.10.18

[Nginx] linux 실시간 access 로그 보기

📌 nginx 로그가 쌓이는 경로 cd /var/log/nginx/ 📌 실시간 로그 확인 명령어 tail access.log Nginx access 로그 저장하기 nginx conf 설정파일에 들어가서 저장 경로를 설정해주어야합니다. access_log : 접속 로그가 쌓이는 경로이다. 이렇게 수정 후 nginx restart 해야 access 로그 파일이 생성됩니다. (nginx -s reload 로만 되는지는 모르겠다) 그러면 이렇게 뾰로롱 하고, 로컬 디렉토리에도 파일이 생성됩니다.

Web-Network 2022.10.13

[Spring & Java] 🚀 재고시스템으로 알아보는 동시성이슈 해결방법

인프런 "재고시스템으로 알아보는 동시성 이슈 해결방법" 강의를 보고 정리한 글입니다.📗 Spring & Java, Mysql, Redis 를 이용합니다재고시스템을 활용해서, 멀티스레드 혹은 분산환경에서 가변데이터에 접근하는 동시성 문제를 해결하는 내용이 강의에 담겼습니다. 동시성 문제란, 동일한 하나의 데이터에 2 이상의 스레드, 혹은 세션에서 가변 데이터를 동시에 제어할 때 나타는 문제로,하나의 세션이 데이터를 수정 중일때, 다른 세션에서 수정 전의 데이터를 조회해 로직을 처리함으로써 데이터의 정합성이 깨지는 문제를 말합니다.📌 강의를 듣고 느낀 점은, 동시성 문제의 근본적인 해결 방법은 가변데이터에 순차적으로 접근할 수 있는 방법을 구상하는 것 이라고 생각했습니다데이터베이스를 이용한 락프레임워크 ..