프로젝트 6

[프로젝트] 스프링에서 구글 GeoCoding으로 주소로부터 위도 경도 얻기

1. 왜 사용했나 프로젝트 기능 중에 사용자와 가게 사이의 거리를 구해야 했다. 그래서 거리 구하는 방법을 찾아보다 위도와 경도를 이용해서 두 위치 사이 거리를 구할 수 있음을 발견하여 적용해보고 싶었다. 이를 위해서는 주어진 주소를 위도 경도로 변환해야 했다. 그래서 구글에서 제공하는 api를 사용해 특정 주소를 위도와 경도로 변환하고자 하였다. 2. Google Cloud Console 사전 설정 1) Google Cloud Console로 이동하여 프로젝트 생성 2) Geolocation API 를 찾아 사용버튼 클릭 3) 카드 등록 90일 무료 사용 가능 결제는 90일 이후 본인이 더 원할 경우에 진행됨. 자동 결제 아님 4) 제한 사항 설정(안 해도 괜찮음) 5) API 복사해 놓기 3. 스프링..

[프로젝트] 스프링에서 채팅 기능 구현해보기

1. 채팅 기능을 왜 구현하게 되었나? 현재 진행하고 있는 프로젝트에서 사용자들끼리 1:1로 대화를 하는 기능이 필요하다. 이를 소켓을 활용한 채팅 기능이 아닌 그냥 일반적으로 글을 주고 받는 쪽지 형식으로 구현해도 되긴 했으나 소켓으로 채팅기능을 구현해보는 걸 이번 기회 아니면 언제 해보겠냐는 생각에 적용해보기로 하였다. 다행히 프론트엔드 개발자 분도 동의해주셨다. 2. 근데 socket이 뭔데 추후 정리 3. 채팅 기능 구현을 위한 의존성 implementation 'org.springframework.boot:spring-boot-starter-websocket' 4. socket 처리를 위한 핸들러 추후 정리 5. 내가 구현할 채팅 환경 및 이를 위해 필요한 엔티티 정리(+레포지토리) 1) 환경 ..

[프로젝트] 도커에 대해서

0. 도커를 왜 사용하게 되었나 맨 처음 프론트엔드와 백엔드로 나누어 프로젝트를 진행하려고 했을 때, 내가 백엔드로서 만든 api를 프론트엔드 개발자가 어떻게 사용해야 하는 것인가에 대해 엄청나게 궁금했던 적이 있다. 일단 팀원 모두 프엔 백엔 나누어서 개발하는 것이 처음이었고, 구글에 검색을 해 봐도 관련 지식이 아예 없다보니 뭔 솔? 이러면서 이해하기가 어려웠다. 그래도 지금은 대략적인 프로세스를 알게 되었다. 내가 인텔리제이로 만든 스프링 프로젝트를 프론트엔드 개발자의 노트북에서 실행하여 프론트엔드 개발자가 해당 api를 사용하면 되는 것이다. 물론, 백엔드 개발자는 cors 제한을 풀어놔야 하며, 데이터베이스는 동시에 접근 가능 하도록 ec2에 만들어 두거나 프론트엔드 노트북에 데이터베이스 설정을..

[프로젝트] 카카오페이 api 스프링에서 사용하는 법

0. 왜 카카오페이 api를 사용하게 되었나? 현재 진행하고 있는 프로젝트에서 상품을 주문한 후 결제하는 기능이 필요했다. 실제로 결제가 되는 과정을 거치면서, 사용자들이 편하게 결제할 수 있는 방법에는 뭐가 있을까 생각하다 api를 가져다 쓰면 좋겠다는 생각이 들었고, 주위에서 사용빈도가 높은 카카오페이 api를 사용하면 사용자들이 편하게 결제를 진행할 수 있겠다는 생각을 하게 되었다. 그래서 카카오페이 api를 프로젝트에 적용해보고자 하였다. 아래는 카카오페이 api를 스프링 및 스프링부트에서 사용하기 위한 방법이다. 흐름 정리 프론트엔드가 백엔드에게 결제 정보를 담은 후 api1를 요청한다. 그러면 백엔드는 api1에 대한 처리로 카카오페이 서버에게 결제를 하고 싶다는 요청을 보내고 응답으로 결제를..

[프로젝트] ServiceInterface와 ServiceImpl

스프링에는 Service 계층이 있다. 이러한 Service 계층을 구현할 때는 그냥 기능별 Service 클래스를 만들어 구현을 하는 방법이 있고, 기능별로 ServiceInterface를 만들고 해당 Interface를 구현하는 ServiceImpl을 구현하는 방법이 있다. 이 두 방법에 대해 살펴보고 나의 프로젝트에 맞는 방법에 대해 고찰해보고자 한다. 1. ServiceImpl을 사용하는 방법 1) 개념 Service 별로 interface를 만들고, 해당 interface를 구현한 실제 serviceImpl를 만든다. BoardServiceInterface를 만들어서 create라는 메서드를 명시하고 BoardServiceImpl을 만들어서 create 메서드를 실제로 구현하는 것. 2) 장점 ..

[프로젝트] 객체 생성 방법(생성자, getter setter, 빌더)

1. 서론 어떤 클래스를 만들고 해당 클래스를 사용해서 속성 값을 가지고 있는 인스턴스를 만드려고 할 때 흔히 사용하는 방식에는 생성자를 사용하는 방식, setter로 속성 값을 설정해서 생성하는 방식, builder를 사용하는 방식이 있다. 예전에 get과 set 메서드만 알고 있을 때는 set으로 값을 설정하는 방법을 사용했는데 @builder 어노테이션이 있다는 것을 알게 되고 난 후, 각 방식에 대해 궁금해졌다. 각 방식의 특징은 무엇이고 어떤 방법이 이번 내 프로젝트에 적당할까? 2. 각 방식에 대해 알아보기 1) 생성자 사용 ① 사용 방법 public class Car { private int price; private String owner; public Car(int price, Strin..