SpringBoot 4

동적으로 Dto 구성해봤어? 난 해봤어 (부제 : 동적 DTO 구성하기 (@JsonProperty))

문제 탐색 및 배경 설명이번에 해결 해야할 문제는 다음과 같았습니다. 현재 개발 중인 서비스는 네트워크 신호가 불안정하거나 차단된 환경(산지, 터널 등)에서도 사용자가 **BLE 기능을 통해 차량의 OBD(On-Board Diagnostics)**와 직접 통신해 제어 명령을 수행할 수 있어야 함.이때 외부 요청으로부터 제어 명령 데이터를 어떻게 안정적으로 가져올 것인가?에 관한 고민 및 문제 인식 의사 결정명령 데이터 적재 방식 서비스 이용 시점마다 실시간 요청으로 명령을 내려받아 단말기에 저장하는 방식은 지연과 불안정성 위험도 높음대신 서버 내부에서 배치 작업으로 미리 명령 데이터를 DB에 적재하고, 차량 출고와 예약 정보에 따라 반환하는 방식을 선택했다.이를 통해 사용자는 서비스 이용 시 명령과 관..

로깅 간단히 알아보기

서비스를 개발하고 테스트를 할 때, 그 로직이 잘 동작하는지를 확인하는 방법은 다양하다. 그 중에서 나는 보통 출력문 하나를 넣어서 잘 출력이 되는지를 확인하고는 했는데, 이러한 방식은 실무에서 사용하지 않고 사용을 권장하지 않는다. 그래서 출력문이 아닌 별도의 로깅 라이브러리를 사용해 로그를 출력하는데, 이 로깅 라이브러리의 종류가 매우 많다. 그래서 몇 개의 예시를 통해 정리해보고자 한다. @RestController public class LogTestController { // 이 코드는 로그를 선언하는 방법이다. private final Logger log = LoggerFactory.getLogger(getClass()); // 5번라인의 로그 선언 방법 외에도 아래 2개의 방법이 있다. pr..

스프링/백엔드 2022.05.18

2번째 맞닥드린 오류 : could not prepare statement (DB 관련 오류)

앞서 책을 통해 프로젝트를 진행중 JPA 파트에서 테스트 코드를 작성하다가 보면 분명히 오류가 발생할 것이다. 오류가 발생하는 지점은 콘솔 쿼리 로그를 확인할 때, 설정하기 전에는 H2의 쿼리 문법이 적용되어 id bigint generated by default as identity 라는 쿼리문을 확인할 수 있다. 이 쿼리를 MYSQL의 쿼리문으로 확인하기 위해서는 다음과 같은 코드를 application.properties에 설정을 해야 하는데, spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect 이 쿼리문을 추가하게 되면 발생하는 오류가 윗 오류인데, posts 테이블이 존재하지 않아 쿼리문을 넣을 수 없..

Compile과 implementation의 차이점

현재 인프런이라는 강의 서비스에 CTO로 계신 김동욱님의 책인 '스프링부트와 AWS로 혼자 구현하는 웹 서비스' 라는 책을 통해 다시 웹 백엔드 부분을 공부하고 있다.(유툽에서 분명히 많이 본 이름이였는데, 아 그분? 하면서 얼굴이 떠올랐다. 그분이 그 분인거 같다....) 책에서는 인텔리제이와, JPA, JUnit테스트, Gradle, 소셜로그인, AWS 인프라로 무중단 배포까지를 망라해 책을 공부하는 독자들에게 지식을 전수해준다. 이 책이 끝판왕 개발 서적은 아니지만 더 깊은 내용을 공부하고 싶다면 다른 책을 찾아봐야한다. (인프런의 김영한-JPA수업 추천) 해당 책은 이미 서버 개발자(주니어 급)를 꿈꾸는 학생 또는 취준생이라면 한 번쯤은 봤거나, 접해볼 만한 책일 것이다. 내가 여기서 얻고자 하는..

스프링/백엔드 2022.01.30