댓글을 내용을 저장할 도메인을 설계해보자 들어가며 이번 포스팅에서는 댓글 기능을 구현하기 전에 간단하게 도메인부터 설계해보도록 하겠습니다. 사전 준비 만약 게시판 프로젝트를 하시려는 분은 이전포스팅 따라 해 만들어주시기 바랍니다! [SpringBoot] 무작정 (REST API)CRUD 게시판을 만들기 @RestControllerAdvice, @ExceptionHanlder을 통해 전역 예외 @RestControllerAdvice을 통해 전역 예외처리를 명시하고 @ExceptionHanlder을 사용해 특정 예외처리를 구현해 보자! 들어가며 기능을 구현하다 보면 예외가 발생할 수 있습니다. 중복된 예외를 처리하게 back-stead.tistory.com 전체 코드는 깃에 올려두었습니다. 깃 이동하기 Gi..
분류 전체보기
@RestControllerAdvice을 통해 전역 예외처리를 명시하고 @ExceptionHanlder을 사용해 특정 예외처리를 구현해 보자! 들어가며 기능을 구현하다 보면 예외가 발생할 수 있습니다. 중복된 예외를 처리하게 되면 코드가 지저분하게 될 수 있습니다. 그래서 @RestControllerAdvice 에노테이션을 통해 예외를 사용할 범위를 설정하고 @ExceptionHandler을 통해서 특정 예외를 처리하는 기능을 구현하도록 하겠습니다. 사전 준비 만약 게시판 프로젝트를 하시려는 분은 게시글 오류페이지 처리하기까지 따라 해 만들어주시기 바랍니다! [SpringBoot] 무작정 (REST API)CRUD 게시판을 만들기 오류페이지 처리하기 [10] 커스텀한 오류페이지를 통해 처리해 보자! 들어..
커스텀한 오류페이지를 통해 처리해 보자! 들어가며 톰캣의 기본 오류 페이지인 WhiteLabel 오류 페이지는 개발자에게는 유용하지만 사용자에게는 이해하기 어려운 페이지일 수 있습니다. 사용자가 이해하기 쉬운 오류 페이지를 제공하기 위해 사용자 정의 오류 페이지를 만들어서 해당 오류 상태가 발생했을 때 보이도록 구현해 보겠습니다. 사전 준비 만약 게시판 프로젝트를 하시려는 분은 로그및 로그인 인터셉터 까지 따라해 만들어주시기 바랍니다! [SpringBoot] 무작정 (REST API)CRUD 게시판을 만들어기 로그 및 로그인 인터셉터 구현하기 [9] 요청로그 및 로그인 인터셉터 구현하기 들어가며 이전 포스팅까지는 애플리케이션을 실행하고 게시판을 사용할 때 아무런 로그가 나오지 않았습니다. 이제 각 기능을..
요청로그 및 로그인 인터셉터 구현하기 들어가며 이전 포스팅까지는 애플리케이션을 실행하고 게시판을 사용할 때 아무런 로그가 나오지 않았습니다. 이제 각 기능을 실행할 때마다 요청과 응답 로그를 출력하는 요청 로그를 구현할 것입니다. 또한 현재 "localhost:8080/boardWrit" URL로 직접 접속하면 로그인하지 않은 사용자도 해당 페이지로 이동할 수 있어 보안 문제가 발생합니다. 이제 인터셉터 기능을 활용하여 공통적으로 로그인이 필요한 페이지를 설정하여, 로그인하지 않은 사용자가 해당 페이지에 접속하지 못하고 로그인 폼으로 이동하는 로그인 인터셉터를 구현할 것입니다. 사전 준비 만약 게시판 프로젝트를 하시려는 분은 게시글 페이징처리하기 까지 따라해 만들어주시기 바랍니다! [SpringBoot]..
"R-Tree, 전문검색(n-gram), 함수 기반, 멀티 밸류, 클러스터링, 유니크"인덱스에 대해서 알아보자 들어가며 이전 포스팅에서는 B-Tree 인덱스에 대해서 알아보았다 .이번 포스팅에서는 MySQL에서 지원하는 나머지 인덱스에 대해서 알아보도록 하자. R-Tree 인덱스 R-Tree 인덱스란? 공간인덱스 R-Tree 인덱스 알고리즘을 이용해 2차원의 데이터를 인덱싱 하고 검색하는 목적의 인덱스이다. 세 가지 기능이 포함돼 있다. 공간 데이터를 저장할 수 있는 타입 공간 데이터의 검색을 위한 공간 인덱스(R-Tree 알고리즘) 공간 데이터의 연산 함수(거리 또는 포함 관계의 처리) 구조 및 특성 Mysql에서 지원하는 도형 데이터 타입 POINT : 점 LINE : 선 POLYGON : 도형 GE..
MySQL의 인덱스(Index)-B-Tree를 알아보자 인덱스란? 인덱스는 값을 찾기 편리하게 만들어주는 도구입니다. 쉽게 비유하자면 책의 마지막 부분에 있는 찾아보기 페이지가 인덱스와 비슷합니다. 자바의 컬렉션을 예로 들어보면, SortedList와 ArrayList가 있습니다. SortedList는 저장된 값을 항상 정렬된 상태로 유지하는데, 이는 찾아보기에서 "ㄱ", "ㄴ", "ㄷ"와 같이 정렬된 것과 유사합니다. 그러나 SortedList는 데이터가 저장될 때 항상 정렬된 값을 가져야 하므로 저장 과정이 복잡하고 속도가 느릴 수 있지만, 조회 과정은 매우 빠르게 동작합니다. 반면에 ArrayList는 값을 저장하는 순서를 그대로 유지하는 구조입니다. DBMS의 인덱스는 SortedList를 사용하..
템플릿 메서드, 전략, 콜백 패턴에 대해서 알아보자 들어가며 애플리케이션을 개발할 때 템플릿 메서드 패턴이나 콜백패턴을 사용하지 않고 실행 시 로그를 작성해 주는 기능을 개발했다고 해보자. 그러면 try~catch 같은 예외처리를 잡는 문법이 무수히 많은 곳에 작성되면서 코드의 가독성을 낮아지게 한다. 그래서 템플릿 메서드 패턴과 콜백패턴을 알아보고 이러한 패턴들을 사용해 코드의 가독성을 높여 유지보수를 하기 쉽게 하는 방법을 알아보자 템플릿 메서드 패턴 템플릿 메서드 패턴이란? 객체지향 프로그래밍에서 사용하는 패턴 중 하나이다. 메서드 패턴은 상위 클래스의 사용할 알고리즘의 큰 틀을 만들어두고 변경이 되는 알고리즘을 하위에 클래스의 재 정의하여 구체화할 수 있는 기법을 말합니다. 이를 통해 중복된 코드..
스프링에서 사용하는 filter와 Interceptor에 대해서 알아보자 들어가며 필터(Filter)와 인터셉터(Interceptor)는 모두 웹 애플리케이션에서 클라이언트의 요청과 응답을 가로채어 특정 작업을 수행하는 기능을 제공합니다. 이 두 개에 대해서 한번 알아보도록 하겠습니다. 필터(filter) 필터(filter)란? 서블릿(스프링에서는 DispatcherServlet를 사용)컨테이너 내에서 요청 및 응답을 가로채 조작하는 기능을 제공합니다. 주로 요청 전처리와 응답의 후처리를 수행하며 클라이언트와 서버 간의 통신을 필터링하거나 조작할 수 있습니다. 필터의 동작 방법 클라인언트가 요청하면 WAS로 전달 WAS는 필터로 전달 필터는 서블릿으로 전달 서블릿은 컨트롤러로 전달 컨트롤러는 뷰페이지로 ..