본문 바로가기

전체 글290

GET, POST 메서드 요청 시, DTO 객체에는 setter가 필요한가? PATCH 메서드를 요청받는 DTO 객체에는 getter와 setter 모두 작성한다. 그렇다면, GET, POST 메서드 요청을 받는 DTO 객체도 동일하게 구현하는가? 간단히 요약하면 다음과 같다. - GET 메서드 요청 시, GET 요청의 경우는 JSON 형태의 데이터가 아닌 Query Parameter이다. 그래서, Jackson2HttpMessageConverter를 사용하지 않는다. 이 경우에는 WebDataBinder를 사용한다. 즉, GET 요청의 경우에는 별도의 설정이 따로 없다면, Spring에서는 WebDataBinder의 기본 값 할당 방법인 Java Bean 방식을 사용하기 때문에, setter가 없으면 작동하지 않는다. 그러나, GET 요청의 경우에도 setter를 사용하지 않을.. 2022. 10. 23.
2022. 10. 21. § 학습 전(계획) ▶ 학습 목표는 무엇인가? Spring MVC - API 계층 HTTP 요청 / 응답에서의 DTO(Data Transfer Object) DTO 유효성 검증(Validation) DTO 적용 실습 ▶ 이미 알고 있는 내용은 무엇인가? DTO에 대해선 단어만 본 것 같고, 무슨 내용인지는 자세히 알지 못한다. 이번 학습을 통해, 자세히 배울 수 있을 것 같다. 내일이 주말이라고 쉬엄쉬엄 하지 말자. 오늘도 화이팅👊 § 학습 후(점검 및 평가) ▶ 새롭게 배운 내용은 무엇인가? DTO 클래스는 요청 데이터를 하나의 객체로 전달 받는 역할을 한다. HTTP 요청의 수를 줄이는 목적으로 사용한다. 단점으로는, Controller 클래스가 늘어남에 따라 DTO 클래스가 두 배씩(ex. xxxP.. 2022. 10. 21.
Spring MVC 요청 및 응답 동작 과정 Spring MVC 서블릿 API를 기반으로 클라이언트의 요청을 처리하는 모듈을 spring-webmvc라 하고, 이를 줄여서 Spring MVC라고 부른다. ( 서블릿이란 클라이언트의 요청을 처리하도록 특정 규약에 맞춰 Java 코드로 작성하는 클래스 파일로, 아파치 톰캣이 서블릿들을 웹 애플리케이션으로 실행되도록 해주는 서블릿 컨테이너 중 하나이다 ) * Spring MVC는 클라이언트의 요청을 편리하게 처리해주는 프레임워크이다. Model Spring MVC의 'M' Spring MVC 기반의 웹 애플리케이션이 클라이언트의 요청을 받으면, 요청 사항을 처리하기 위한 작업을 하고, 클라이언트에게 처리한 작업의 결과 데이터를 Model이라 한다. View Spring MVC의 'V' Model 데이터를.. 2022. 10. 21.
Java) 버블 정렬(Bubble Sort) 알고리즘 여러 정렬(Sort) 알고리즘 중에 '버블 정렬'에 대해 알아보자. 버블 정렬은 정렬 알고리즘 중에서 가장 기본적인 알고리즘이다. 인접한 두 요소를 검사하여 정렬하는 방법이다. 시간 복잡도는 O(n^2)으로 상당히 느리다. 하지만, 코드는 짜기 매우 단순하다. 코드는 다음과 같다. public class SortAlgorithm { public int[] bubbleSort(int[] arr) { // 외부 for문은 배열의 길이만큼 반복문을 돌려야 함 for (int i = 0; i < arr.length; i++) { boolean swapped = false; // 내부 for문은 끝을 제외한 나머지 길이(n-1)만큼 반복문을 돌려야 함 for (int j = 0; j < arr.length - i.. 2022. 10. 20.
Java) 피보나치 수열 + Advanced 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수이다. 피보나치 수열은 재귀 함수를 이용한 풀이가 일반적이다. 다음 코드와 같다. public int fibonacci(int num) { if (num 2022. 10. 20.
2022. 10. 20. § 학습 전(계획) ▶ 학습 목표는 무엇인가? Spring MVC - API 계층 Spring MVC의 동작 방식과 구성 요소 Controller 클래스 설계 및 구조 생성 핸들러 메서드(Handler Method) 응답 데이터에 ResponseEntity 적용 HTTP 헤더(Header) Rest Client Controller 구현 실습 ▶ 이미 알고 있는 내용은 무엇인가? 모두 처음 배우는 내용들이다. 새로운 Section을 시작하기 때문에, 새롭게 다시 시작한다는 마인드로 임하자. 오늘도 고생해보자! 화이팅! 😎 § 학습 후(점검 및 평가) ▶ 새롭게 배운 내용은 무엇인가? Spring MVC란 무엇인지에 대해, 동작 방식은 어떠한지에 대해 새롭게 알게 되었다. 또, Controller에서 핸들러.. 2022. 10. 20.
Section 2 회고 Section 2가 끝이 났다. 자료구조, 네트워크, 스프링 개념에 대해 학습했다. 자료구조..? 흠.. 어찌저찌 마치긴 했다. 네트워크까지도.. 스프링.... ? ? Section 2의 학습 완벽도를 100이라 치면, 한 40정도는 될까나.. 그래도 학습하면서 꾸역꾸역 버텨온 나에게 칭찬해주고 싶다😎 이번 회고는 Section 1 때의 회고와는 다르게, KPT 회고 방식으로 써보려고 한다. 1. 목표 상기하기 Q. 현재 '내'가 학습을 통해 이루고자 하는 것은 무엇인가? 코드스테이츠 백엔드 기간 동안의 학습을 말한다면, 취업이 목표일 것이고, 매일의 학습을 말한다면, 그 날의 학습 내용들을 모두 완벽히 이해하는 것이 목표일 것이다. 궁극적인 목표는 백엔드 개발자로서의 취업과 내 스스로 웹 어플리케이션을.. 2022. 10. 19.
2022.10.18. § 학습 전(계획) ▶ 학습 목표는 무엇인가? Spring Framework의 핵심 개념 AOP ▶ 이미 알고 있는 내용은 무엇인가? 어제 학습하던 AOP를 마저 학습한다. 쉽지 않은 내용일 것 같다. 오늘도 집중해서 학습하자! 👊 § 학습 후(점검 및 평가) ▶ 새롭게 배운 내용은 무엇인가? Advice와 Pointcut에 대해 알게 되었다. AOP 실습을 해보면서, 대충 어떻게 사용해야 적절한지 새롭게 알게 되었다. ▶ 다른 사람에게 설명할 수 있는가? 왜 AOP를 적용해야 하는지, 뭐가 좋은건지에 대해서 간략하게 설명할 수 있을 것 같다. ▶ 아직 이해되지 않은 내용은 무엇인가? 대충 예제 코드를 보면서 따라 쳐보기만 했기 때문에, 정확히 AOP가 필요하겠다라는 상황을 맞닥뜨렸을 때, AOP를 적용.. 2022. 10. 18.
ArrayList 생성 시, List 인터페이스로 선언하는 이유 보통 ArrayList를 생성하려고 한다면, 다음과 같이 생성하는 걸 많이 보게 된다. List list = new ArrayList(); List라는 인터페이스로 선언을 하는 식인데, 이렇게 업캐스팅해서 선언하는 이유가 있었다. 객체 지향 프로그래밍의 일환으로, 다형성을 지원하기 위해서라고 한다. 즉, 변경에 유연하게 하기 위함이란 의미이다. 만약, ArrayList라는 인스턴스로 선언하고 있다고 가정해보자. 데이터의 용도가 바뀌게 되어서 자료구조 LinkedList로 변경을 해야한다고 할 때, 서로가 호환되지 않는 메서드들은 모두 수정이 필요하게 된다. 이는 변경에 유연하지 못한 설계이다. 반면에, 인터페이스 List라는 인스턴스로 선언하게 된다면, 선언부만 LinkedList로 변경해주고 이외에 다.. 2022. 10. 18.