본문 바로가기

전체 글192

44일차: Spring MVC(예외처리) ❯ 예외 처리 애플리케이션을 구현하다보면 여러가지 예외를 마주하게된다. 그 중 현재 진행중인 Spring MVC에서 겪을 수 있는 예외 중 가장 대표적인 것이 클라이언트 요청 데이터의 유효성 검증에서 발생하는 예외이다. 현재까지는 예외가 발생할 경우 정상적으로 작동하지 않았음을 나타낼뿐 그에 대한 구체적인 정보는 제공하지 않았다. 따라서 어떠한 예외가 왜, 어떤부분에서 발생했는지를 알려주기 위해 예외 처리를 할 수 있다. ❯ @ExceptionHandler 사용 위 그림의 리턴 결과는 예외가 발생했을때 스프링이 전송해주는 응답 메세지이다. 이를 적당히 가공하여 우리가 원하는 예외에, 원하는 형태의 응답을 전송해줄 수 있다. 1. Controller 에 @ExceptionHandler 메서드 생성 @Exc.. 2023. 4. 14.
[Java] 정렬 알고리즘(Sorting Algorithm) 정렬 알고리즘이란 원소를 번호순이나 사전순과 같이 일정한 순서로 열거하는 알고리즘을 말한다. 정렬 알고리즘의 종류는 여러가지가 있다. 적합할 알고리즘을 선택할때는 정렬해야하는 데이터의 양, 메모리, 안정성, 시간복잡도 등을 고려해야한다. 데이터의 정렬은 추후 데이터 검색과 활용, 정규화등에 유용하게 쓰일 수 있다. 그 중 대표적인 알고리즘인 병합정렬, 퀵정렬, 삽입정렬, 힙정렬, 버블정렬, 계수정렬, 기수정렬에 대해 하나씩 정리해보고자 한다. 구분 이름 최선 평균 최악 메모리 안정성 방식 비교 정렬 병합정렬 n log n n log n n log n n Y 합병 퀵정렬 n log n n log n n^2 log n(average), n(worst) N 파티셔닝 삽입정렬 n n^2 n^2 1 Y 삽입 힙정.. 2023. 4. 14.
43일차: Spring MVC(서비스 계층, Mapper) ❯ 서비스 계층 Controller 가 전달받은 요청을 직접적으로 처리하는 계층을 말한다. Spring의 DI를 통해 API 계층과 서비스 계층을 연동할 수 있다. (서비스 객체를 API 객체 생성자 파라미터로 주입) API 계층에서 전달받은 DTO를 서비스 계층의 도메인인 엔티티(Entity) 객체로 변환해서 서비스 계층에 전달한다. (반대로 비즈니스 로직을 거친 Entity는 DTO 객체로 변환되어 클라이언트에게 전달된다.) DTO 클래스와 Entity 객체의 역할을 분리하는 이유는 크게 세가지로 나뉜다. 계층별 관심사 분리 : DTO의 역할은 API 계층에서 요청 데이터를 받고, 응답 데이터를 전달하는 목적을 가진다. 반면 Entity는 서비스 계층에서 데이터 엑세스 계층과 연동하여 비즈니스 로직 .. 2023. 4. 13.
42일차: Spring MVC(DTO) ❯ DTO(Data Transfer Object) 어제 작성한 코드에서는 클라이언트로부터 요청 데이터를 받을 때 각 파라미터를 @RequestParam 으로 하나씩 직접 삽입하였다. 이러한 방법은 파라미터가 늘어날 경우 코드가 복잡해진다. 또한 유효성 검사가 필요할 경우 코드가 더욱 복잡해지게된다. 이러한 단점을 해결하기 위해 사용하는 것이 DTO 방식이다. 어제 코드를 작성할 때는 아래와 같이 작성했었다. import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.Map; @RestController @Reque.. 2023. 4. 12.
41일차: Spring MVC(API 계층, Controller) ❯ Sping MVC Spring 모듈 중 웹 계층을 담당하는 모듈이 있다. 그 중 Servlet API를 기반으로 클라이언트 요청 처리하는 모듈을 spring-webmvc라고 한다. 이를 줄여서 Spring MVC라고 한다. * 서블릿(Servlet): 클라이언트 요청을 처리할 수 있도록 특정 규약에 맞춰서 Java 코드로 작성한 클래스파일. 서버에서 실행되다가 웹 브라우저가 요청을 하면 해당 기능을 수행하여 웹 브라우저에 결과를 전달한다. * 서블릿 컨테이너: 클라이언트 요청을 받아주고 응답할 수 있도록 웹 서버와 소켓으로 통신하는것. 대표적으로 아파치 톰캣(Apache Tomcat)이 있음 M(Model): 클라이언트의 요청을 처리하고 응답으로 돌려주는 결과물(결과데이터)을 의미한다. V(View).. 2023. 4. 11.
40일차: Section2 회고 Section1 회고를 작성한게 며칠전 같은데 벌써 한달이 또 지나버렸다. 지난 한달동안은 자료구조(알고리즘)와 네트워크, 스프링에 대해 학습했다. 확실히 Section1 보다는 생소한 개념이 많았고, 많이 어렵다는 느낌을 받았다. (Section3은 2보다 더 어렵다는데.... 잘할 수 있겠지..?🫠) 부트캠프의 1/3이 지난간것처럼 올해의 1/4이 지나갔다. 하루하루 시간이 지날수록 뭔가를 이루어내야한다는 부담감이 생기기도 하는데, 우선 지금은 현재 진행중인 부트캠프를 성공적으로 완주하는것만 생각하기로 했다. 특히 이번 세션은 지난 세션에 비해서 강의 자료가 친절하게 느껴지지는 않았다. 각 개념에 대한 간략한 설명만 제공되고 나머지 공부는 공식 홈페이지 자료를 읽어보도록 구성되어있었다. 제공된 부가자.. 2023. 4. 10.