Spring/Spring Boot

Spring/Spring Boot

스프링의 외부 API 호출, 그리고 RestClient

애플리케이션 외부 API 호출 현업에서 외부 API를 호출해야하는 일이 많다. 다른 회사의 서비스(휴대전화 인증, 결제시스템)를 이용할 때 필수적이다. 물론 클라이언트 단에서 외부 API를 호출한다면 스프링 서버에서 API를 호출할 일이 없겠지만, CORS 오류를 회피하기 위해 프록시 서버가 필요한 경우 스프링 서버가 프록시 서버의 역할을 해줘야 하기 때문에 스프링에서 외부 API를 대신 호출해줘야 한다. 또한 서버를 서비스 단위로 나눠 배포하는 경우, 내부 서버 컨테이너끼리 데이터를 교환해야할 경우가 생기는데 이럴 때 RabbitMQ와 같은 메시지 브로커를 사용해 데이터를 전달할 수 있지만, 컨테이너끼리 API를 호출을 하는 방식을 사용할 수 있다. 자바나 스프링에서는 HTTP 요청을 보내기 위한 다양..

Spring/Spring Boot

Spring REST Docs 설정하기 (build.gradle & .kts)

REST Docs Spring Rest Docs는 Spring MVC를 사용하는 REST API를 문서화할 때 사용하는 툴이다. 다양한 API 문서화 도구 문서툴 노션이나 깃허브 Wiki 등 문서 툴을 사용해 직접 API 문서를 작성하는 방식이다. 서비스 코드의 변경, 작성 실수 등의 이유로 인해 내가 작성한 API 스펙과 실제 코드의 API 스펙이 달라질 수 있다는 문제가 있다. Swagger 대중적인 API 문서화 툴이다. Swagger를 사용해서 API를 문서화하면 아래와 같이 서비스 코드에 Swagger 관련 어노테이션과 코드가 작성되어야 한다. 때문에 코드의 양이 방대해져 서비스 가독성이 떨어뜨릴 수 있는 문제점이 있다. @RestController @RequestMapping("/v1/cate..

Spring/Spring Boot

Spring Boot 환경 QueryDSL 설정 (build.gradle & .kts)

QueryDSL JPA에서 제공하는 객체지향쿼리인 JPQL(Java Persistence Query Language)을 통해 동적 쿼리를 구성하면 코드가 굉장히 난잡해진다는 것을 느낄 수 있다. JPQL은 문자열을 사용한다. 문자열을 조건에 따라 이어붙이는 형식으로 구성하기 때문에 생기는 문제가 있다. 문자열이기에 오타가 발생해도 컴파일 단계에서 에러를 잡아주지 못한다.(다만, NamedQuery를 사용하면 가능하다) 또한 동적쿼리를 구성할 때, 중간중간 if문에 의해 문자열이 추가되기 때문에 가독성이 떨어진다. 따라서 쿼리를 체계적으로 관리하기 어렵다. QueryDSL은 위와 같은 문제를 해결하기 위해 만들어졌다. Type-Safe한 쿼리를 사용하기 위해 엔티티와 매핑되는 정적 타입 QClass를 생성..

Spring/Spring Boot

[Spring Boot] HTTP Message Converter

1. Message Converter란? Message Converter란 말그대로 메시지를 가공해주는 도구를 말한다. 전 세계의 공용어가 영어인 것처럼, Web에서의 공용어는 JSON(JavaScript Object Notation)이다. 자바 오브젝트를 파이썬 오브젝트를 사용하는 곳에 보낸다고 생각해보자. 만약 그냥 자바 언어로 보낸다면 파이썬 프로그램은 해당 언어를 전혀 이해하지 못할 것이다. 반대로 파이썬 측에서 파이썬 언어로 오브젝트를 전송한다면 자바 프로그램도 이해하지 못하는 건 똑같다. 그렇기 때문에 서로 통신할 때는 JSON 오브젝트를 사용해야한다. JSON은 자바스크립트 기반이지만, 통신의 공용어로 사용된다. 각각 프로그램에서 오브젝트를 JSON 데이터로 변경하거나 JSON 데이터를 해당..

Spring/Spring Boot

[Spring Boot] 스프링 부트 Bash Shell로 실행하기

Bash Shell을 이용하면 스프링 부트 프로젝트를 IDE를 사용하지 않고 실행할 수 있다. 백엔드 개발을 하다보면 shell script를 사용할 일이 많아지기때문에 알아두면 좋을 것이다. Bash Shell을 이용해 프로젝트를 실행하는 방법으로는 2가지가 있다. 첫 번째 방법은 jar 파일을 생성해 실행하는 것이고, 두 번째 방법은 메이븐 플러그인을 사용해 실행하는 것이다. 두 번째 방법이 jar파일을 이용하는 것보다 쉬운 편이다. **주의사항** Maven Wrapper를 사용하려면 mvnw, mvnw.cmd 파일이 필요 org.springframework.boot spring-boot-maven-plugin pom.xml에 메이븐 플러그인이 존재해야함 스프링부트 이니셜라이져에서 프로젝트를 생성하..

Spring/Spring Boot

[Spring Boot] 스프링부트 시작하기!

스프링 프레임워크는 설정할 것도 굉장히 많고 복잡하기 때문에 작업 초기에 설정하느라 시간이 많이 소요되는 편이다. 메이븐이나 그래들을 이용해 필요한 의존성을 직접 찾아서 추가해줘야했다. 반면, 스프링부트는 스타터를 사용해 특정 기능에 필요한 의존성을 손쉽게 처리할 수 있도록 도와준다. 그렇게 처리된 라이브러리들을 통해 스프링 설정을 자동으로 해주기 때문에 시간 면에서 훨씬 이득이다. 그렇다면 스프링부트를 이용하는 방법에 대해서 알아보자. 1. 홈페이지에서 파일 생성하기 스프링부트 파일 생성하기 👇👇👇👇👇👇 https://start.spring.io/ 홈페이지에 접속해보자. 만약 메이븐, 자바를 사용한다면 초기값으로 나둬도 괜찮다. 빨간 박스를 표시한 곳을 위주로 자신의 상황에 맞게 설정해주면 된다. Gr..

gakko
'Spring/Spring Boot' 카테고리의 글 목록