전체 글

들어가며 일반적으로 Spring boot에서 Get방식(혹은 쿼리파라미터가 필요한) 요청을 받을 때 사용되는 어노테이션에는 @RequestParam, @PathVariable, @ModelAttribute가 있다. 파라미터의 개수가 적은 경우에는 앞의 두개 어노테이션으로 충분하지만 파라미터가 많아질 수록 객체로 요청을 받는게 가독성 측면에도 관리 측면에도 수월해지기 때문에 @ModelAttribute를 사용한다. 종종 @ModelAttribute를 사용하면서 헷갈리거나 잊어버리는 개념이 있어 이번 포스팅에서는 @ModelAttribute 어노테이션에 대해 공부해보고자 한다! @ModelAttribute 사용 이유 요청을 받을 때 다음과 같이 파라미터의 개수가 적다면 @RequestParam 어노테이션으로..
들어가며 WebClient는 RestTemplate의 대안으로서 급부상된 WebFlux의 라이브러리이다. Spring MVC에서도 지원하는 WebClient는 RestTemplate과 비교했을 때 가장 큰 장점이 `비동기 통신을 지원한다`는 점이 아닐까 싶다. 물론 그 외에도 함수형 프로그래밍 스타일을 지원한다는 점, 다양한 설정과 에러처리를 지원한다는 점 등도 장점으로 꼽을 수 있겠다. WebClient의 최대 장점인 비동기 통신을 지금까지 사용하기 어렵고 쓸 데가 없다는 이유만으로 동기 방식을 고수해왔었는데 이번 회사 프로젝트를 하면서 비동기 통신이 필요해진 시점이 생겼다. 이번 기회에 WebClient의 비동기 통신을 구현해보았고 이번 포스팅의 주제로 삼아보고자 한다. 처음 비동기 통신을 구현해보았..
· Study/etc
들어가며 이미 많은 개발자들이 알고, 사용해보고 있을 ChatGPT. Open AI에서 만든 ChatGPT는 API로도 사용이 가능하다. 모델마다 토큰 당 가격에 일부 차이가 있지만 단순한 프로젝트에 적용하기에는 부담되는 비용이 아니기 때문에 사이드프로젝트에 도입을 해보면 좋을 것 같다는 생각이 들어 간단하게 사용법을 작성해보고자 한다. 자세한 내용은 OpenAI의 ChatGPT API Docs를 참고하도록 하자 ChatGPT API Docs OpenAI Platform Explore developer resources, tutorials, API docs, and dynamic examples to get the most out of OpenAI's platform. platform.openai.com..
들어가며 회사에서 개발 중인 서비스가 통신하기 위한 서버가 특정 서버에서만 접근 가능한 상황이었다. 백그라운드에서 동작하는 (유저가 접근하지 않아도 되는) 어플리케이션은 그 특정 서버에 서비스를 띄워서 서로 통신이 가능한 방식을 사용하고 있었지만 개발 중인 서비스가 동작 중인 서버는 별도의 서버로 분리가 되어있었고, 이 서버는 정책상 특정 서버에서 인바운드가 막혀있는 상태였다. 조금 복잡한데 아무튼 개발 중 서비스 -> 타겟 서버로의 직접 접근이 안된다는 말이다. 이 문제를 해결하기 위해서는 타겟 서버로의 접속을 우회하는 방식을 사용해야하는데 이걸 SSH 터널링이라고 한다. 이번에는 SSH 터널링의 개념과 필요성, 구현 예시에 대해 작성해보고자 한다. SSH (Secure Shell) 시큐어 셸(Secu..
들어가며 2023.08.25 - [Study/Spring boot] - [Spring boot] WebClient 사용해보기 2-1 이전글에서는 내가 어떻게 웹클라이언트를 사용하고 있는 지에 대해 간단하게 설명했다. 이번 글에서는 코드를 하나씩 보면서 내가 짠 코드가 어떻게 작동하는 지에 대해 설명해보고자 한다. 지난 글에서 위의 그림과 같이 메서드 체이닝 방식을 직접 구현했었다. 위의 그림 순서에 따라서 차근차근 코드를 보자. ApiWebClientBuilder @Component @RequiredArgsConstructor public class ApiWebClientBuilder { private final WebClient.Builder webClientBuilder; // 체이닝 시작점 publ..
들어가며 무려 1년도 더 된 이전글이 항상 내 블로그 인기글 1위인걸 볼 때마다 마음에 걸렸다. 막 개발 공부하기 시작했을 즈음 webClient에 대한 자료가 별로 없어서 정리할 겸 작성했던 글인데 관련 키워드로 검색하면 저 글이 뜨는 걸 보고... 새롭게 알게된 내용들을 조금 더 추가하고, 현재는 어떻게 사용하고 있는 지에 대해 정리를 해보고자 한다. 기본 개념이나 RestTemplate과의 차이점 등등은 공식문서나 구글에 검색하면 깔끔하게 정리된 자료가 많기에 넘어가기로 하고, 내가 사용하면서 알게 된 개념들만 적어내려가보겠다! WebClient 최종적으로 완성될 구조는 위와 같다. 각 step 이 뭐고 어떻게 사용하는 지는 천천히 설명하기로 하겠다. 이 구조를 사용하면 아래와 같이 코드를 사용할 ..
· Study/etc
들어가며 개발을 하다보면 사진처럼 주석을 하이라이팅 하거나 한눈에 모아보고 싶은 경우가 있다. Intellij에서 제공하는 테마를 살짝 손봐서 주석 색상을 변경하는 방법도 있고, Javadoc 주석(/** content */)을 사용는 방법도 있 지만 Intellij 자체에서 주석을 모아보는 TODO 기능이 존재한다. 오늘은 Intellij에서 제공하는 TODO 코드 태그(Code Tag)기능을 알아보자! TODO 기능 사용하기 기본 사용법 TODO 기능의 사용방법은 간단하다. 주석 코드와 함께 대문자로 TODO를 입력하면 자동으로 주석이 하이라이팅이 된다. (!) 이때 TODO와 작성하고자하는 내용은 한칸의 공백(space)가 있어야 한다. 이렇게 멀티라인으로도 사용할 수 있다! 멀티라인 TODO는 T..
· Review
항해99에 승선한 5월부터 8월까지. 총 99일 +a간의 여정이 막을 내렸다. 미니 프로젝트부터 알고리즘, 주특기, 실전프로젝트까지 다사다난했던 지난 날들을 회고하며 항해의 끝과 앞으로의 개발자로서의 여정의 첫 문장을 이렇게 시작하고 싶다. 전직 호텔리어가 개발자로 전직하게 된 썰 푼다 호텔리어가 개발자를 한다고? 국내 5성급 호텔에 취업해서 일을 하다가 갑자기 개발자가 되기로 마음을 먹었을 때, 사실 주위의 반대는 없었다. 어렸을 때부터 기계를 다루길 좋아했고, 취미가 여행경비 엑셀에 정리하기였기 때문이다. 코딩을 접하게 된 계기는 사소했다. 떠오르는 IT 시대에 발맞춰 학교에서 코딩 교양을 열어줬고, 흥미가 생겨 수업을 듣게 되었다. 교양에서 사용한 프로그램은 스크래치였는데, 블럭 몇 개 가지고 고양..
· Study/TIL
“사회적 교통약자도 편하게 식사하세요” 배슐랭은 사회적 교통 약자가 보다 쉽게 이용할 수 있는 배리어 프리 식당이나 카페 등 가게 정보를 알려주고 사용자 위치 맞춤 추천 서비스를 제공합니다. 사회적 교통 약자분들 위한 음식점 정보와 유저들의 생생한 방문 경험이 담긴 리뷰들로 편하게 방문해보세요! 배슐랭이 사회적 교통약자분들이 편하게 살아갈 수 있도록 한 걸음 나아가겠습니다. 👩‍🦼 배슐랭 바로가기 Background 배리어 프리 (Barrier-free)는 사회적 약자가 생활하기에 불편함을 주는 물리전, 제도적 장벽을 제거하자는 운동입니다. 생활공간에서 장애인과 비장애인 간의 장벽을 없애자는 움직임이 증가하고 있지만 아직도 사회적 교통약자는 행복을 추구할 기본적인 권리를 보장받지 못하고 있습니다. 배슐랭..
· Study/TIL
들어가며 프로젝트에 음식점 검색 기능을 구현해야했다. 초반에는 Elasticsearch를 이용해서 구현을 해보려고 목표를 잡아두었었는데, Elasticsearch의 러닝커브가 높고 리소스도 많이 드는 기술이기 때문에 다른 방법을 찾다가 FullText Search에 대해 알게 되었다. 오늘의 TIL은 Elasticsearch에 대해 간단하게 알아보고, MySQL에서 제공하는 FullText Search에 대해 정리하고자 한다. 검색 기능을 구현하기 위한 몇가지 방안 1. 검색 엔진 Elasticsearch Elasticsearch란? Elasticsearch는 루씬(Lucene)을 기반으로 텍스트, 숫자, 위치 기반 정보, 정형 및 비정형 데이터 등 모든 유형의 데이터를 위한 무료 검색 및 분석 엔진이다..
반응형
Anna-Jin
내일 한걸음 더