[DEV] 기록 165

[SpringBoot] HV000232: No JSR 223 script engine found for language "javascript"

개요 Bean Validation 내 ObjectError을 적용하기 위해 @ScriptAssert 어노테이션을 적용했더니 아래와 같은 에러가 발생했습니다. HV000232: No JSR 223 script engine found for language "javascript" 원인 해당 에러의 원인은 자바 버전이 달라서 발생하는 문제였습니다. @ScriptAssert 어노테이션의 경우 Java 11에 최적화되어있는 듯 합니다. 실제로 JDK를 11로 적용하고 프로젝트를 빌드하면 아래와 같은 메시지를 볼 수 있습니다. Warning: Nashorn engine is planned to be removed from a future JDK release 해결방법 따라서, 결국 JDK를 11로 적용하고 프로젝트..

[DEV] 기록 2021.07.24

[SpringBoot] Excel 생성 및 다운로드

개요 ElasticSearch로 조회한 목록들을 엑셀로 다운로드할 수 있는 기능을 추가해달라는 요청이 들어와 구현을 해봤습니다. 2021.08.08 해당 코드는 OOM 예외를 야기할 수 있으므로 보다 나은 코드는 아래 게시글을 참고해주세요. https://jaimemin.tistory.com/1889 [SpringBoot] 대용량 엑셀 다운로드를 위한 SXSSFWorkbook 개요 기존에 Excel 생성 및 다운로드 기능을 구현하는 코드를 공유했었습니다. https://jaimemin.tistory.com/1768 [SpringBoot] Excel 생성 및 다운로드 개요 ElasticSearch로 조회한 목록들을 엑셀로 다운로드할.. jaimemin.tistory.com 구현 코드 ExcelControl..

[DEV] 기록 2021.05.17

티스토리 블로그 내 gist css 수정하는 방법

개요 코드를 가독성 좋게 포스팅하기 위해 gist를 사용하고 있는데, 코드가 사이드로 길어지면 블로그 사이드바를 침범하는 경우가 발생했습니다. 따라서, 임베디드된 gist의 css를 수정할 필요성을 느꼈기에 관련 내용을 포스팅합니다. 해결방법 적용할 css는 아래와 같습니다. .gist { max-width: [원하는 px]; overflow:auto; } .gist .blob-wrapper.data { max-height: [원하는 px]; overflow:auto; } 사실 코드가 길어짐에 따라 gist가 길어지는 것은 크게 상관없기 때문에 .gist 클래스에 대한 css만 적용해도 무방합니다. 저 같은 경우 max-width를 700px로 잡으니 얼추 블로그와 맞게 설정할 수 있었습니다. * 반응형..

[DEV] 기록 2021.04.25

[SpringBoot] 세션이 만료될 때 세션 값 가져오는 방법

개요 유저가 로그아웃할 때 시간을 DB에 저장하기 위해 세션이 만료되기 직전 세션 내 attribute를 가져와 어느 유저인지 확인하고 해당 유저의 로그아웃 시간을 업데이트해야 했습니다. 해결방법 처음에는 ApplicationListener를 상속받은 후 LogoutSuccessEvent가 발생했을 때 유저 정보를 가져와 업데이트하는 방식으로 접근했는데, 해당 이벤트는 유저가 직접 로그아웃 버튼을 눌러야만 발생하는 문제점이 있었습니다. 저는 세션이 만료됨에 따라 로그아웃 되는 유저의 로그아웃 시간도 기록하고 싶었기 때문에 HttpSessionListener를 상속받은 뒤 sessionDestroyed 메서드를 오버라이드 하여 문제를 해결했습니다. LogoutSuccessEvent가 발생했을 때 호출되는 ..

[DEV] 기록 2021.04.24

[크롤링] 경향신문 크롤링

개요친구가 자료수집을 위해 크롤링을 해달라고 요청해서 사전지식이 없는 상태에서 진행해봤습니다.대부분의 내용은 yoonpunk.tistory.com/6 블로그에서 참고했으므로 도움이 되었다면 해당 블로그에 가서 좋아요를 눌러주시면 될 것 같습니다! 진행 과정1. 우선, yoonpunk님이 작성하신 동아일보 신문기사 크롤링하기 코드를 확인해봅시다.

[DEV] 기록 2021.04.12

[Spring] Maven 정리

Maven이란? Maven은 프로젝트 관리 도구입니다. (비슷한 관리 도구로는 gradle이 있습니다.) Maven은 보통 build 및 dependency 관리 용도로 많이 쓰입니다. Maven과 같은 프로젝트 관리 도구가 필요한 이유 자바 프로젝트를 빌드할 때 jar 파일을 추가해야 하는 경우가 종종 발생합니다. 이때, 프로젝트 관리 도구를 사용하지 않을 경우 필요한 jar 파일들을 웹사이트에서 하나하나 다운로드를 한 뒤 수동으로 classpath와 build path에 추가해줘야하합니다. 다행히도 Maven을 사용한다면 Maven이 jar 파일들을 대신 다운로드하여주므로 이런 귀찮은 프로세스를 생략할 수 있습니다. * Maven 프로젝트 내 pom.xml 파일에 필요한 dependency를 추가해주..

[DEV] 기록 2021.03.03

Intellij IDEA(인텔리제이) 단축키 정리

반드시 익혀야할 단축키 단축키 설명 Ctrl + Shift + Space 적합한 코드 자동완성을 추천 (Smart Code Completion) Shift + Shift 파일, 클래스, 설정 등 키워드에 관련된 가능한 모든 것을 검색 (Search Everywhere) Alt + Enter 퀵픽스 제안 (Show intention actions and quick-fixes) Alt + Insert 생성자, Getter/Setter, toString과 같은 코드 생성 (Lombok으로 대체 가능) Ctrl + P 커서가 위치한 메서드의 매개변수 조회 Ctrl + W 커서 근처의 코드 선택 영역 확대 Ctrl + Shift + W 커서 근처의 코드 선택 영역 축소 Ctrl + E 최근 연 파일 목록 검색 S..

[DEV] 기록 2021.03.02

[Java] json을 Java Object로 변환하는 방법

개요 ElasticSearch를 호출하는 방식을 RestTemplate에서 RestClient로 변환하면서 json을 Java Class로 변환하는 방식을 적용했습니다. 이때, UnrecognizedPropertyException과 같은 에러가 발생하는 등 여러 시행착오를 거쳤기 때문에 해당 내용을 정리하고자 합니다. 본론 우선, 저는 jackson 라이브러리의 ObjectMapper 클래스를 통해 json을 Java Object로 변환했기 때문에 maven에 아래의 jackson 라이브러리를 추가해줘야 합니다. com.fasterxml.jackson.core jackson-databind 최신 버전 라이브러리를 추가한 뒤에는 아래와 같이 ObjectMapper의 readValue 메서드를 통해 json..

[DEV] 기록 2021.02.27