본문 바로가기

전체 글

(104)
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를 사용해 요청이 오면 요청 데이터, 응답 데이터, 요청까지 걸린 시간을 로그로 자동으로 찍어주는 코드를..
소나큐브(SonarQube) 설치 및 IntelliJ와 연동해서 코드 정적분석하기 안녕하세요! 🤗 이번 포스팅에서는 소나큐브(SonarQube)를 설치해보고 intelliJ에서 연동하는 방법에 대한 포스팅을 작성해보겠습니다! 사전준비 환경 IntelliJ Ultimate Maven Java 1.8 Window 소나큐브(SonarQube) 소나큐브(SonarQube)? 설치하기 전에 소나큐브에 대해 간단히 설명하자면, 소나큐브는 소스 코드를 분석한 후에 설계, 복잡도, 잠재적인 에러, 코딩 스타일 등 프로젝트의 품질을 관리할 수 있는 정적분석 도구입니다. 설치방법 다운로드 페이지에 접속합니다. 페이지에 접속하자마자 다운로드 링크가 보이는데, 이 버전은 최신판이기 때문에 자바 11이 필수적으로 깔려있어야 실행이 가능합니다. 따라서, 자바 1.8에서 실행시킬 수 있게 조금 아래 버전을 다운..
SpringBoot의 Jsoup을 이용해 코로나 현황 크롤링하기 프로젝트 안녕하세요! 이번 포스팅에서는 SpringBoot의 Jsoup을 이용해서 코로나 현황 통계를 크롤링하는 미니 프로젝트를 작성해보겠습니다! 해당 프로젝트의 코드는 깃허브에서 확인이 가능합니다 🤗 사전 준비 robots.txt 확인작업 robots.txt를 확인하는 이유는 크롤링을 허용해주는 웹사이트인지를 알기 위해 확인을 해주어야합니다. 크롤링할 대상의 웹페이지의 도메인/robots.txt로 들어가면 확인할 수 있습니다. (robots.txt에 대한 자세한 설명) 저희가 크롤링할 페이지는 robots.txt 파일이 존재하지 않아 (...) 크롤링을 허용한다고 판단하고 크롤링을 진행해보겠습니다! Jsoup Jsoup이란 HTML을 가져오고 파싱할 수 있게 도와주는 자바 라이브러리입니다. 이 라이브러리를 사용..
IntelliJ에서 JUnit설치하기 안녕하세요! 이번 포스팅에서는 IntelliJ에서 JUit을 설치하고 사용하는 방법에 대해 알아보겠습니다. 설치 방법 File - Project Structure에 들어가줍니다. Modules - + - JARs or directories을 눌러줍니다. intelliJ가 설치된 위치의 폴더 안의 lib 폴더로 들어갑니다. (기본 경로는 C:\Program Files\JetBrains\IntelliJ IDEA 20xx.xx.xx\lib) 그 후에 아래 .jar 파일들을 추가해줍니다. junit.jar junit-4.12.jar hamcrest-core-1.3.jar 체크박스에 모두 체크한 후에 Apply를 눌러 설치하고 OK를 눌러 창을 닫아줍니다. JU nit을 import해서 설치가 잘 되었는지 확인합..
[Spring Boot] 인터넷 익스플로러 API 호출 캐싱관련 이슈(Internet Explorer caching api calls issue) 해결 방법 문제 발생 비동기로 동작하는 API의 요청으로 특정 값을 바꿨을 때, DB는 바뀌었는데 브라우저에서는 계속 변경 전 값만 보이는 이슈가 발생했다. 특이한 점은 Chrome, Edge 모두 정상 동작했지만, Internet Explorer(IE)만 이 현상이 발생했다는 점이다. 몇 번 이슈를 재현해보니, IE에 캐싱 때문에 이런 이슈가 발생한 것을 알았다. 해결 방법 처음에는 프론트에서 해결할 수 있을 줄 알았는데, 아니었다. 응답을 보내주기 전에 아래 코드를 추가해 주면 된다. public anyDto anyMethod(..., HttpServletResponse response) { //someting response.setHeader("Cache-Control","no-store"); // 추가 re..
2018.12.23 ~ 2019.07.10 멘토링 후기 2018.12.23 ~ 2019.07.10, 약 96시간동안 멘토링을 받은 후기입니다. 시작 전 멘토님 이종호 - Software Engineer - eBay Korea | LinkedIn 멘토링을 받게 된 이유 취업에 대한 걱정 지금 상태에서 개발자로써 어떻게 나아가야할지 감이 잡히지 않음 학교에서 수업을 듣는것만으로는 부족함을 느낌 가장 큰 이유는 취업이였고, 취업 이후에도 과연 내가 제대로 된 개발자로 나아갈 수 있을지에 대한 걱정도 앞서 있었던 상태에서 좋은 기회가 생겨 멘토링을 시작하게 되었다. 첫 만남과 멘토링 컨셉 정하기 멘토님과 멘토링을 본격적으로 시작하기 전에 멘토링 컨셉을 갖는 시간을 가졌다. 내가 이루고 싶은 목표를 우선순위로 두어 컨셉을 정해나갔다. 최종적으로 정한 멘토링 컨셉을 간..
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로 바꾼 후에 정렬을 하는 코드인데, 이 상태로 ..