본문 바로가기

Backend

(37)
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을 가져오고 파싱할 수 있게 도와주는 자바 라이브러리입니다. 이 라이브러리를 사용..
Java Arrays.asList() 일반 배열을 ArrayList로 바꿔야 할 때는 Arrays.asList()를 사용해서 간단하게 바꿀 수 있습니다. 그러나 asList를 사용하면서 신기한 현상을 발견했습니다. public static void main(String[] args) { Character[] arr = {'c', 'b', 'e', 'd', 'a'}; List list = Arrays.asList(arr); Comparator byAlpa = new Comparator() { @Override public int compare(Object o1, Object o2) { return (char)o1 - (char)o2; } }; list.sort(byAlpa); } 배열을 list로 바꾼 후에 정렬을 하는 코드인데, 이 상태로 ..
SpringBoot의 Querydsl을 이용하여 동적쿼리(Dynamic SQL) 작성하기 안녕하세요! 이번 포스팅에서는 SpringBoot의 QueryDSL을 이용해서 동적쿼리(Dynamic SQL)를 사용해보도록 하겠습니다. 모든 코드는 Github에서 확인이 가능합니다. 📚 사전 준비 프로젝트 설명 여러 더미 데이터들을 넣고 동적으로 조건절을 생성하는 프로젝트를 작성해보겠습니다. 개발 환경 IntelliJ Ultimate Gradle 6.0.1 / Maven Java 1.8 SpringBoot 2.2.2 Window 🔎 구현 1. 의존성 추가 가장 먼저 QueryDSL을 사용하기 위해 필요한 의존성을 추가해줍니다. build.gradle plugins { id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } dependencies { co..
SpringBoot의 ControllerAdvice를 이용하여 JSON 형태로 예외처리하기 안녕하세요! 이번 포스팅에서는 SpringBoot의 Optionl과 @RestControllerAdvice를 이용해서 예외를 만들어보고 예외를 발생시켜보도록 하겠습니다. 사전 준비 프로젝트 설명 JSON 형태로 POST 요청을 보내면 요청 값에 따라 응답을 보내는 프로젝트를 작성해보겠습니다. 값이 있는 경우 → 값 그대로 리턴 값이 없는 경우(null) → 경고 메세지 리턴 개발 환경 IntelliJ Ultimate Gradle Java 1.8 SpringBoot 의존성 spring-boot-starter-test 구현 1. VO & ResponseDto 만들기 가장 먼저 POST로 요청을 받을 때 데이터를 전달받을 Person VO와 응답을 보낼 때 사용할 ResponseDto를 작성해보도록 하겠습니다..
SpringBoot의 MockMvc를 사용하여 GET, POST 응답 테스트하기 안녕하세요! 이번 포스팅에서는 SpringBoot 프레임워크에서 제공해주는 MockMvc를 만들고 테스트하는 방법을 알아보도록 하겠습니다. 전체 코드는 Github에서 확인이 가능합니다. ✍️ 📚 개념 정리 1. MockMvc란? 실제 객체와 비슷하지만 테스트에 필요한 기능만 가지는 가짜 객체를 만들어서 애플리케이션 서버에 배포하지 않고도 스프링 MVC 동작을 재현할 수 있는 클래스를 의미합니다. 2. 사용방법 Junit4를 사용하기 위해 의존성에 spring-boot-starter-test를 추가해줍니다. build.gradle testCompile("org.springframework.boot:spring-boot-starter-test") pom.xml org.springframework.boot ..