백엔드
-
Spring-Boot에 Spring-Data-JPA 적용하기 (Feat. Querydsl)백엔드 2024. 2. 23. 11:31
현재 백엔드 관련 지식을 쌓기 위해 영상 강의를 시청중에 있습니다. 해당 프로젝트의 실제 스펙은 Spring Boot를 사용하고 MyBatis를 활용해 DB에 접근할 수 있도록 해주는 간단한 게시판 프로젝트입니다. 이후 많은 트래픽에 대비한 여러 요소들까지 확인할 수 있다고 알고 있어 계속 시청하고 있습니다. 하지만, 시청하고 있는 강의 그대로 코드를 작성하여도 MyBatis 설정에 문제가 있는 것인지, mapper에 문제가 있는 것인지 더 이상 진행을 할 수 없는 상황이었습니다.. 그래서 계속해서 학습을 하고 있는 JPA를 대신 적용해서 해보자는 생각이 들었고, MyBatis에서 JPA로 ORM을 변경하도록 했습니다. 또한, Spring에서 JPA를 더욱 더 잘 활용할 수 있도록 해주는 Spring D..
-
Flutter + Spring Boot 가족, 모임 서비스 구현하기 2 (Feat. Api 설계)백엔드 2023. 9. 25. 23:33
가족, 모임 구현 서비스에 앞서 여러가지 공부를 진행했고 오늘부로 첫 번째 api 설계에 따른 구현을 마무리했습니다. 중간중간 DB 스키마도 변경되고 api 설계도 변경되면서 시간이 생각한 것보다 훨씬 많이 걸리게 되었습니다...🥲 그래도 첫 번째 구현을 마무리해서 그동안 있었던 부분들을 정리해보려고 합니다. 1. test 환경 구성 현재 서버 DB를 MySQL로 구성하고 있는데, test에 활용할 DB를 h2로 구성하고 싶었습니다. 그래서 각각 독립된 환경을 구성하고 설정에 따른 실행에 따라 각기 다른 DB 환경을 구성할 수 있도록 해주었습니다. 구체적인 방법은 다음 포스팅에서 확인하실 수 있습니다. https://beomseok37.tistory.com/167 Spring Boot 독립된 test D..
-
Gradle이란?백엔드 2023. 9. 21. 10:47
Gradle이란? Gralde Toll은 우아하고 확장 가능한 선언적 빌드 언어를 갖춘 빠르고 신뢰할 수 있으며 적응성이 띄어난 오픈 소스 빌드 자동화 도구라고 소개되어 있습니다. Gradle을 사용해야하는 이유 Gradle은 활발한 커뮤니티와 강력한 개발자 생태계를 갖춘 널리 사용되고 있는 완성된 도구입니다. Gradle은 JVM용으로 가장 널리 사용되는 빌드 시스템이며 Android 및 Kotlin 등 다중 플랫폼 프로젝트의 기본 시스템입니다. 또한, 풍부한 커뮤니티 플러그인 생태계를 갖추고 있습니다. Gradle은 내장 기능, 타사 플로그인 또는 사요자 정의 빌드 로직을 사용하여 광범위한 소프트웨어 빌드 시나리오를 자동화할 수 있습니다. Gradle은 빌드 로직을 쉽게 읽고 쓸 수 있게 해주는 선언..
-
Spring swagger 적용 방법 (springdoc-openapi)백엔드 2023. 9. 18. 20:01
Swagger란? Swagger는 Open Api Specification(OAS)을 위한 프레임워크입니다. OAS는 RESTful 웹 서비스를 설명, 생산, 소비 및 시각화하기 위한 기계 판독 가능 인터페이스 정의 언어에 대한 사양을 뜻합니다. 직접 소스 코드를 보지 않고도 서비스를 이해할 수 있도록 해주는 것입니다. Swagger는 개발한 REST API를 편리하게 문서화해주고, 이를 통해서 관리 및 제 3의 사용자가 편리하게 API를 호출해보고 테스트 할 수 있는 프로젝트입니다. 다만, 주의할 점은 운영환경과 같은 외부에 노출되면 안되는 곳에서의 사용은 주의해야 합니다. Spring Boot에서는 springfox와 springdoc을 통해 Swagger를 사용할 수 있습니다. springfox의 ..
-
Spring Boot 독립된 test DB 구성 (MySQL, H2)백엔드 2023. 9. 15. 20:17
현재 MySQL을 이용해 프로젝트를 구성하고 있습니다. 또한, 테스트를 계속 진행할 예정이기 때문에 테스트에는 h2 DB를 활용해보려고 시도해보았습니다. 서버 실행할 때와 테스트를 실행할 때 다른 DB 환경에서 구동할 수 있도록 설정하는 과정에 대해 글을 남겨보도록 하겠습니다. 환경 application.yml spring: jpa: show-sql: true properties: hibernate: format_sql: true generate-ddl: true hibernate: ddl-auto: validate datasource: url: username: password: server: port: 8080 현재 DB로 mysql을 연결해서 사용하고 있는 상태입니다. 이 환경에 테스트를 할 때에는..
-
Rest Template으로 Server(Client) to Server 통신하기백엔드 2023. 9. 15. 10:49
Spring Boot 프로젝트를 통해 api를 설계해 Client로부터의 요청에 대한 응답을 내려줄 수 있었습니다. 이번 포스팅에서는 Server에서 다른 Server로 요청을 하고 이 요청에 대한 응답을 받는 방법에 대해 공부해보도록 하겠습니다. 예제 코드 Client ApiController @RestController @RequestMapping("/api/client") @RequestArgsConstructor public class ApiController { private final RestTemplateService restTemplateService; @GetMapping("/hello") public String getHello(){ return restTemplateService.he..
-
Spring filter, interceptor백엔드 2023. 9. 14. 11:32
오늘은 filter, interceptor에 대해 배워보도록 하겠습니다. 이전에 배웠던 AOP와 같이 서비스 로직으로부터 여러가지 다른 관점의 로직을 분리시켜줄 수 있는 기능입니다. 각각의 기능마다 어떤 차이가 있는지 살펴보도록 하겠습니다. Filter Web Application에서 관리되는 영역으로써 Spring Boot Framework에서 Client로부터 오는 요청/응답에 대해서 최초/최종 단계의 위치에 존재하며, 이를 통해서 요청/응답의 정보를 변경하거나, Spring에 의해서 데이터가 변환되기 전의 순수한 Client의 요청 응답 값을 확인할 수 있습니다. 유일하게 ServletRequest, ServletResponse의 객체를 변환할 수 있습니다. 주로 SpringFramework에서는 ..
-
Spring Validation백엔드 2023. 9. 13. 11:45
Validation Java에서는 null값에 대한 접근을 할 때 null pointer exception이 발생합니다. 이러한 부분을 방지하기 위해 미리 검증을 하는 과정이 필요한데 이를 validation이라고 합니다. 예시 public void service(String account, String password, int age){ if(account==null || password==null){ return ... } if (age == 0){ return ... } // 정상 로직 시작 } Validation은 검증해야 할 값이 많은 경우 코드의 길이가 많이 길어지게 됩니다. 구현에 따라서 달라질 수 있지만 Service 로직과 분리가 필요합니다. 흩어져 있는 경우 어디에서 검증을 하는지 알기..