RestTemplate란?RestTemplate은 Spring 3.0부터 제공하는 클래스 중 하나로, RESTful 웹 서비스를 호출할 때 사용하는 HTTP 클라이언트이다. 이를 통하여 GET, POST, PUT, DELETE 같은 HTTP 요청을 간편하게 처리할 수 있다. RestTemplate Config 설정하기Timeout 설정하기RestTemplate에는 기본적으로 타임아웃에 대한 설정이 없다.RestTemplate으로 호출한 외부 API에서 응답이 지연된다고 가정해 보자. 그렇게 된다면, 요청이 영원히 대기 상태가 되어 스레드가 블로킹된다. 또한 서버 자원이 계속 점유되어 성능 저하가 될 뿐 아니라, 여러 요청이 동시에 들어올 경우 대기 큐 폭주로 인하여 서버 장애로 이어질 수 있다.이런 상황..
Spring(boot)
들어가기 Dto객체에 Lombok을 활용하여 어노테이션을 사용하던 중 아래와 같은 경고가 발생하였다. warning: Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' to your type.@Data^1 warning해당 경고가 발생되는 원인가 해결법을 알아보자. 확인해 보기 상황설정 MemberDto.java@Datapublic class MemberDto { private String name;..
들어가기 캐시란?데이터 접근 속도를 높이기 위해 자주 사용하는 데이터를 메모리에 임시로 저장하는 기술이다. 즉, DB 조회 부화를 줄이고 시스템 성능을 크게 향상할 수 있다. Redis - Cache Redis는 인메모리 데이터 스토어로, 데이터의 읽기/쓰기 속도가 매우 빠르다.또한, 다양한 데이터 구조(문자열, 해시, 리스트 등)를 지원하고 확장성이 뛰어나며, TTL(만료 시간) 설정으로 자동 캐시 관리가 가능하다는 이점이 있다. Redis 기반 Cache 전략1. Read-Through 캐싱 : 캐시에서 데이터를 조회하고, 데이터가 없으면 DB에서 조회한 후 Redis에 캐싱하는 방식. 2. Write-Through 캐싱: 데이터를 DB에 쓰기 전에 Redis에 먼저 저장하는 방식. 3. Wri..
들어가기 2024.05.24 - [Spring(boot)] - [Spring Boot] Mybatis 연동하기 [Spring Boot] Mybatis 연동하기안녕하세요! 😁😁이번에는 Spring Boot 프로젝트에 MyBatis를 연동하는 방법에 대해 진행하고자 합니다. MyBatis란?Mybatis는 자바 언어용 오픈 소스 퍼시스턴스 프레임워크입니다.데이터베이스와 자guns23.tistory.com지난번에 springBoot와 mybatis를 연동하는 블로그를 작성한 바가 있다. mybatis를 사용함으로 인하여, 데이터베이스와 자바 객채 간의 매핑작업을 단순화하여 진행할 수 있었다. 만약, 객체 안의 데이터가 일대다의 관계를 형성하고 있다면.. 어떻게 해야 될까?mybatis에는 resultMa..
들어가기🧐 회원(member)을 저장하는 회원가입 API가 있다고 가정해 보자. 해당 API에는 회원을 저장하고 나서 로그(log) 데이터를 DB에 저장하는 로직이 추가적으로 있다. 또한, 두 개의 테이블(member, log)이 한 트랜잭션에 묶여 있다고 가정해 보자. ※ 문제 발생회원(member)을 저장할 때 예외가 발생한다면, 당연히 회원가입 실패의 응답데이터를 던져주는 게 맞다. 하지만, 로그(log)를 저장할 때 예외가 발생한다면 예외를 던져주는 게 맞는 서비스인가???(member, log는 한 트랜잭션에 묶여 있으므로, 둘 중 예외가 발생하면 둘 다 rollback이 된다.) 로그(log)에서 예외 실패되어도, 회원(member)은 rollback이 되지 않도록 REQUIRES_NEW을..
안녕하세요! 😁😁이번에는 Spring Boot 프로젝트에 MyBatis를 연동하는 방법에 대해 진행하고자 합니다. MyBatis란?Mybatis는 자바 언어용 오픈 소스 퍼시스턴스 프레임워크입니다.데이터베이스와 자바 객체 간의 매핑 작업을 단순화하고 SQL 쿼리를 효과적으로 관리할 수 있도록 도와줍니다. MyBatis는 JDBC(Java Database Connectivity) 코드 작성과 관련된 번거로움을 줄여주며, 개발자가 SQL 쿼리를 XML 파일이나 어노테이션을 사용하여 작성할 수 있도록 해줍니다. 주요 특징)✅간단한 설정 → MyBatis는 간단한 XML 설정 파일을 통해 데이터베이스 연결 및 매핑 정보를 관리합니다.✅ 객체-관계(ORM) 지원→ Mybatis는 데이터베이스 테이블의 레코드를..
안녕하세요! 😊😊이번에는 SprignBoot 프로젝트에 OpenAPI Swagger를 적용하도록 하겠습니다. Swagger란? Swagger는 API를 설계, 문서화 및 사용하는 데에 도움이 되는 도구입니다. OpenAPI Specification(이전은 Swagger Specification으로 알려짐)를 기반으로 하며, API의 구조, 엔트포인트, 매개변수, 응답 형식 등을 정의하는 데에 사용됩니다.Swagger는 API를 설명하는 JSON 또는 YAML 형식의 파일로 작성된 OpenAPI 스펙을 생성하며,해당 스펙으로 개발자들이 API를 쉽게 이해하고 사용할 수 있도록 API를 자동으로 문서화할 수 있습니다. 장점) 1️⃣ 문서화 → API의 구조와 사용법을 자동으로 문서화하여 개발자들이 API..
안녕하세요! 😄😄 이번에는 @RequestBody, @RequestParam, @ModelAttribute 세 개의 어노테이션 사용법 및 활용법에 대해 알아보도록 하겠습니다.@RequestBody해당 어노테이션을 확인하기 전, 직렬화(Serialization), 역직렬화(Deserialization)를 알아보겠습니다. *️⃣ 직렬화(serialization)란? → 직렬화는 객체나 데이터 구조를 바이트 스트림(byte stream)이나 다른 형태의 데이터로 변화하는 과정입니다.파일저장 : 객체를 파일에 저장할 때 직렬화하여 파일로 저장.네트워크 통신 : 객체를 네트워크를 통해 다른 시스템으로 전송할 때, 객체를 직렬화하여 전송.ex) 객체 Object → JSON 형식으로 변환. *️⃣ 역직렬화(Dese..