본문 바로가기

Backend/SpringBoot

(29)
Spring Boot Custom Annotation 만들기 안녕하세요! 이번 포스팅에서는 Spring Boot에서 Custom Annotation을 만드는 방법에 대해 알아보겠습니다. 전체 코드는 Github에서 확인이 가능합니다. ✍️ 📚 개념 정리 1. 커스텀 어노테이션이란? 프로그램에 관한 데이터를 제공하거나 코드에 정보를 추가할 때 사용하는 것을 어노테이션이라고 합니다. 대표적인 어노테이션으로는 @Controller, @SpringBootApplication등이 있습니다. 하지만 위 예시 어노테이션들은 이미 만들어진 어노테이션들이고, 직접 커스텀해서 어노테이션을 만들 수 있는데, 이것을 커스텀 어노테이션이라고 합니다. 2. 프로젝트 설명 이번 프로젝트는 예전에 AOP를 사용해서 모든 요청/응답에 로그를 적용한 프로젝트에서 특정 메소드에는 로깅에서 제외하는..
Spring Security Error Message 커스텀하기 안녕하세요! 이번 포스팅에서는 Spring Security에서 로그인에 실패했을 때 나오는 에러 메세지를 커스텀 해보도록 하겠습니다! 🤗 이번 포스팅에서 사용할 스프링 시큐리티가 적용된 프로젝트는 전 게시글에서 진행한 프로젝트입니다. 전체 코드는 Github에서 확인이 가능합니다. 💻 구현 1. Config 파일 작성하기 가장 먼저, Message 인코딩 설정을 위해 Config 파일을 작성해보겠습니다. SecurityMessageConfig.java /** * 메세지 관련 Config 파일 */ @Configuration public class SecurityMessageConfig { @Bean public MessageSource messageSource() { Locale.setDefault(Lo..
Spring Security로 로그인/회원가입 프로젝트 안녕하세요! 이번 포스팅에서는 Spring Security에 대해 알아보겠습니다. 🤗 Spring Security는 정말 자주 사용하는 기능이자 그만큼 중요하기 때문에 전체적인 내용을 복습할 겸 잊어버리지 않기 위해 포스팅에 기록해두려고 합니다. 전체 코드는 Github에서 확인이 가능합니다. ✍️ 개념 정리 1. Spring Security란? Spring Security란 보안 솔루션을 제공해주는 Spring 기반의 스프링 하위 프레임워크입니다. Spring Security에서 제공해주는 보안 솔루션을 사용하면 개발자가 보안 관련 로직을 짤 필요가 없어 굉장히 간편합니다. Spring Security를 이해하기 위해서는 인증과 권한에 대한 뜻을 알아야 합니다. 2. 인증과 권한 인증(Authentic..
SpringBoot API 요청 값 검증하고 Validation Exception Handing하기 안녕하세요! 이번 포스팅에서는 SpringBoot의 Validation을 이용해서 예외를 발생시키고 처리하는 방법에 대해 알아보겠습니다. 🤗 예전에 Spring Boot Validation을 사용하여 요청 값 검증하기라는 주제로 Validation을 이용해서 요청값을 검증하고 에러를 뷰로 리턴하는 방법에 대해 포스팅했는데, 이번에는 뷰를 리턴해서 템플릿 엔진으로 처리하는게 아닌, API 요청이 왔을 때 요청값을 검증하고 에러가 발생했을 때 응답을 보내는 방법에 대해 알아보도록 하겠습니다. 전체 코드는 Github에서 확인이 가능합니다. 사전 준비 1. 프로젝트 설명 도메인 객체에서 어노테이션을 이용해서 Validaion 처리를 하고, Validaion에서 걸렸을때, @RestControllerAdvice..
SpringBoot의 POI을 이용해서 엑셀 파일 읽기 안녕하세요! 이번 포스팅에서는 SpringBoot의 POI를 이용해서 엑셀 데이터를 읽고 뷰에 뿌리는 코드를 작성해보겠습니다. 👩🏻‍💻 전체 코드는 Github에서 확인이 가능합니다 사전준비 1. POI 마이크로소프트 오피스 파일 포맷(ex. xlsx, ppt ...)을 자바 언어로서 읽고 쓰는 기능을 제공해주는 라이브러리입니다. 2. 프로젝트 설명 엑셀을 업로드하면 html 뷰로 보여주는 코드를 작성해보도록 하겠습니다. 3. 의존성 (SpringBoot에서 프로젝트를 만들 때 기본적으로 추가할 수 있는 의존성을 의미합니다) Web Thymeleaf Lombok 4. 엑셀 파일 준비 엑셀 파일을 준비해줍니다. 저는 더미 데이터를 이용해 아래와 같은 파일을 만들었습니다. 이름.xlsx 구현 1. 의존성 추..
SpringBoot의 MockHttpSession을 이용해서 JUnit Mock 테스트하기 안녕하세요! 이번 포스팅에서는 SpringBoot의 MockHttpSession를 이용해서 JUnit에서 Mock객체를 이용한 Test를 통과하는 방법에 대해 알아보겠습니다. 🤗 🤔 문제 상황 검증해야 할 메소드에 getAttribute()를 이용해서 세션을 가져오는 코드가 들어가는 경우가 있는데, JUnit으로 이 메소드를 Test를 하다 보면 세션에 null이 들어가서 NPE가 발생하는 경우가 종종 있습니다. 이럴 때 MockHttpSession을 유용하게 사용할 수 있습니다. @GetMapping("/test") public String test(HttpSession session){ String id = (String) session.getAttribute("name"); // 생략 } 👩‍💻 구..
SpringBoot의 AOP을 이용해서 로그 남기기 안녕하세요! 이번 포스팅에서는 SpringBoot의 AOP를 이용해서 로그를 남기는 방법에 대해 알아보겠습니다. 👩🏻‍💻 전체 코드는 Github에서 확인이 가능합니다 사전 준비 1. AOP AOP는 관점 지향 프로그래밍이라는 뜻으로, 코드를 핵심 기능과 공통 기능으로 나눈 후에 핵심 기능에서 따로 빼놓은 공통 기능을 불러와 적용하는 방법입니다. 2. 프로젝트 설명 개발을 하면서 로그는 에러가 난 이유를 찾거나 값을 확인하는 데 중요한 역할을 합니다. 하지만 이런 식으로 로그를 수동으로 찍다 보면 아래와 같은 문제가 생깁니다. 중복된 코드의 증가 실수로 로그를 찍지 않으면 값 확인 불가능 따라서 AOP를 사용해 요청이 오면 요청 데이터, 응답 데이터, 요청까지 걸린 시간을 로그로 자동으로 찍어주는 코드를..
SpringBoot의 Jsoup을 이용해 코로나 현황 크롤링하기 프로젝트 안녕하세요! 이번 포스팅에서는 SpringBoot의 Jsoup을 이용해서 코로나 현황 통계를 크롤링하는 미니 프로젝트를 작성해보겠습니다! 해당 프로젝트의 코드는 깃허브에서 확인이 가능합니다 🤗 사전 준비 robots.txt 확인작업 robots.txt를 확인하는 이유는 크롤링을 허용해주는 웹사이트인지를 알기 위해 확인을 해주어야합니다. 크롤링할 대상의 웹페이지의 도메인/robots.txt로 들어가면 확인할 수 있습니다. (robots.txt에 대한 자세한 설명) 저희가 크롤링할 페이지는 robots.txt 파일이 존재하지 않아 (...) 크롤링을 허용한다고 판단하고 크롤링을 진행해보겠습니다! Jsoup Jsoup이란 HTML을 가져오고 파싱할 수 있게 도와주는 자바 라이브러리입니다. 이 라이브러리를 사용..