본문 바로가기

🌳355

[솔로 프로젝트] TodoList - Tomcat 수동 배포, Ngrok 터널링 프로그램 보호되어 있는 글 입니다. 2022. 10. 17.
[Day 117] 솔로 프로젝트 - 웹 애플리케이션 설계 학습 주제 Todo 애플리케이션 만들기 - Restful API - CRUD에 해당하는 HTTP Method 서버와 클라이언트 CORS Tomcat을 이용한 수동 배포 Ngrok을 이용해 로컬에서 서버 실행 새롭게 배운 내용 2022.10.17 - [Back-End/Spring Boot] - [솔로 프로젝트] 웹 애플리케이션 설계 : TodoList 2022.10.17 - [Back-End/Spring Boot] - [솔로 프로젝트] To-do App 서비스 계층에서 엔티티를 수정 기능을 구현하기 위해서는 엔티티에 Getter와 Setter가 필요하다. Dto의 이너 클래스인 Patch는 Controlelr에서 requestBody.setMemberId(memberId);를 위해 Setter가 필요하다... 2022. 10. 17.
생성자에 매개변수가 많다면 빌더를 고려하라 | Builder pattern, Lombok @builder Builder pattern 빌더 패턴은 "복잡한 객체의 구성과 그 표현을 분리하여 동일한 구성 과정이 서로 다른 표현을 만들 수 있도록 하는 것"을 목표로 한다. 복잡한 개체를 단계별로 구성하는 데 사용되며, 마지막에는 개체를 반환한다. 생성자에 대한 매개변수가 축소되고, 가독성이 높은 메서드 호출로 제공된다. 때문에 선택적 매개변수에 대해 null을 전달할 필요가 없다. 객체는 완전한 상태로 인스턴스화되며, 불변 객체는 복잡한 논리 없이 구축될 수 있다. 코드 라인 수는 두 배 이상으로 증가하지만, 가독성 있는 코드를 작성할 수 있다. 유용한 예시 Member 클래스가 있다고 가정하자. name, age, email, phone 필드를 갖고 아래의 특성을 갖는다. 한 번 생성되면 읽기만 가능해야 한다.. 2022. 10. 15.
[Day 114] Spring WebFlux 학습 주제 Spring WebFlux Spring MVC vs Spring WebFlux Spring WebFlux의 Non-Blocking 새롭게 배운 내용 2022.10.14 - [Back-End/Spring WebFlux] - Spring WebFlux 2022.10.14 - [Back-End/Spring WebFlux] - Spring WebFlux 적용 보강할 내용 Spring WebFlux 블로깅 내용 보강, 정리 회고 Spring 5 버전에 리액티브 스택이 추가되면서 Spring 기반의 리액티브 프로그래밍이 도입되는 추세이다. 여기서 주목받는 기술인 Spring WebFlux에 대해 학습했다. WebFlux라는 이름을 처음 봤을 때 이름에 담긴 의미를 생각해 보지 못했었는데 Web + Flu.. 2022. 10. 14.
[Day 113] Spring WebFlux : Project Reactor 학습 주제 Reactor 마블 다이어그램 Publisher, Scheduler, Operator 새롭게 배운 내용 2022.10.13 - [Back-End/Spring WebFlux] - Project Reactor 2022.10.13 - [Back-End/Spring WebFlux] - [Reactor] Operators 보강할 내용 동기 & 비동기와 블로킹 & 논블록킹 회고 Reactor는 리액티브 스트림즈의 구현체이다. 리액티브 프로그래밍의 핵심은 Non-Blocking이다. Non-Blocking은 A 함수가 B 함수를 호출하면 B가 실행되지만, 제어권은 A가 갖고 있으며, A가 계속 제어권을 갖기 때문에 A도 코드를 계속 실행하는 것을 말한다. 이는 클라이언트의 요청에 따른 응답 대기 시간을 줄.. 2022. 10. 13.
[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.