Spring Boot에서의 엑셀 다운로드 API
·
Spring/끄적끄적
1. 의존성 추가 Apache POIMicrosoft Office 파일(Word, Excel, PowerPoint)을 JAVA로 읽고 쓰기 위한 라이브러리이다.Excel에서는 .xls, .xlsx 파일 형식 모두 지원한다.implementation 'org.apache.poi:poi-ooxml:5.2.2'implementation 'org.apache.poi:poi:5.2.2'  2. Apache POI 구현체 Apache POI의 구현체HSSF (Horrible Spreadsheet Format): Excel 97-2003(.xls) 파일 형식을 지원XSSF (XML Spreadsheet Format): Excel 2007 이상(.xlsx) 파일 형식을 지원SXSSF (Streaming XML Spre..
@JoinColumn(name =" ", referecedColumnName= " ")
·
Spring/끄적끄적
1. 개요프로젝트 코드 리뷰를 하다가, `@JoinColumn(name =" ", referecedColumnName= " ")`을 보고 "referecedColumnName? 이게 뭐지??" 하는 생각에 구글링을 해 찾아보았다. 그러던 중, 김영한님 강의에서의 좋은 Q&A가 있어 '간략하게나마 정리해야겠다' 라는 마음에 글을 쓰게 됐다. 그럼 지금까지 프로젝트를 할 때 `@JoinColumn(name =" ")으로만 외래키(FK)에 대한 연관관계 매핑을 했었는데, 이번에 보게 된 referecedColumnName는 무엇일까??   2. @JoinColumn 이란?들어가기 전, @JoinColumn에 대해서 간략히 복습해보자. @JoinColumn은 Entity 간의 연관관계 매핑할 때 사용하는 어노테..
HttpURLConnection, RestTemplate, WebClient 비교
·
Spring/끄적끄적
1. 개요외부 API를 호출할 일이 생겨, 비슷한 다른 로직을 살펴보던 중 HttpURLConnection을 사용하는 것을 보았다. 지난 졸업작품 프로젝트를 하면서 WebClient를 사용하여 네이버 지도 API를 호출한 적이 있었는데이번 글을 기회로 "각 HTTP 요청 연결의 사용 시점"에 대해 정리하고자 글을 작성하게 됐다. 참고로 졸업작품에서는 N^2 (N 인턴 업무에서는 5000~6000 건에 해당하는 API 호출이 필요하여 WebClient를 사용했다.   2. HTTP 통신 방식 공공 데이터 포털에서 제공하는 Open API나 기업에서 제공하는 API를 사용하기 위해서,요구하는 Parameter / Body / Header 형식을 갖춘 HTTP 요청을 만들어야 한다. 서버 간의 HTTP 통신을..
WebClient 네이버 지도 비동기 API 호출하기 (2)
·
Spring/끄적끄적
1. 목표현재 관광지에서 네이버 지도 비동기 API를 호출하여, 방문하지 않는 관광지 중 가장 가까운 관광지 구하기   2. 문제 상황당일치기 여행 알고리즘은 "그리디 알고리즘" 으로현재 위치에서 가장 가까운 노드로 이동하고, 그 다음에도 마찬가지 방식으로 가장 가까운 노드를 선택하여 이동한다. '가깝다' 라는 기준은 네이버 지도 API를 호출하여, 각 노드 간의 거리를 파악한다.(이 때, 탐색 옵션은 trafast로 "실시간 교통 상황을 반영한 차로 이동하는데 걸리는 시간"이 cost가 된다.)  https://api.ncloud-docs.com/docs/ai-naver-mapsdirections-driving    3. 개발  Service 로직의 정리와 구현하면서 생긴 이슈를 다루는데 포커스를 맞추..
WebClient 네이버 지도 비동기 API 호출하기 (1)
·
Spring/끄적끄적
1. 목표당일치기 API를 만들기 Request: 여행할 관광지 노드들 (첫 번째 노드가 출발 위치)Response: 최적화 된 여행 경로를 계산하여 스케줄 정보를 DB에 저장하고, 해당 스케줄의 uuid를 반환   2. 개발  Service 로직의 정리와 구현하면서 생긴 이슈를 다루는데 포커스를 맞추고 있어,DTO 의 각 필드와 Repository 의 설명은 제외하였다. 1) Controller 정의우선 유저가 앱 서비스 내에서 가고자 하는 관광지를 선택해, 당일치기 일정 생성을 할 것이다. 그럼 클라이언트에서 유저가 선택한 관광지 정보들을 Request 요청으로 보내고,서버는 이를 당일치기 여행 스케줄을 작성해 반환한다.  [DayScheduleController]@Controller@Require..