본문 바로가기
반응형

개발/SpringBoot41

SpringBoot OpenFeign(FeignClient) 사용하기 Spring5.0 버전부터 그동안 Spring에서 HTTP Client로 많이 사용되면 RestTemplate이 유지 모드로 변경이 되었다고 한다. 이에 WebClient 사용을 Spring에서 권고하고 있지만 대안으로 간단하게 적용 가능한 OpenFeign 사용법을 알아본다. OpenFeign은 Spring Cloud 처음에는 Spring Cloud Netflix Feign 였으나 Spring Cloud OpenFeign에 통합되면서 SpringMVC 어노테이션 및 HttpMessageConverters를 사용할 수 있게 되었다. OpenFeign은 HTTP API 클라이언트를 단순화하는 것을 목표로 하고 있고 실제 RestTemplate와 비교해봤을 때도 사용하기 간편하다. 먼저 OpenFeign G.. 2023. 5. 31.
SpringBoot cannot deserialize from Object value 에러 SpringBoot로 백엔드를 구현하고 테스트 중에 아래와 같은 에러가 발생하는 경우가 있다. cannot deserialize from object value (no delegate- or property-based creator) API 요청 시 Request Body의 JSON 데이터를 DTO(Java Object)로 변환을 해주는 이때 DTO의 기본 생성자를 찾을 수 없어서 나는 에러이다. 일반적으로 Java 클래스를 생성하면 기본 생성자는 아무런 설정없이 사용할 수 있다. public class UserDto{ private String userId; .... } .... UserDto userDto = new UserDto(); // 기본생성자 사용 하지만 가끔 Lombok을 활용하여 아래와 .. 2023. 5. 27.
Kafka 구성 및 SpringBoot 연동 SpringBoot에 kafka 연동을 적용해보면서 kafka에 대한 기본 개념과 springboot와 연동 방법을 알아본다 Kafka 개요 매우 높은 처리량과 낮은 지연시간(latency) 높은 확장성 고가용성: 클러스터 내 Replication 각 메세지들을 여러 개로 복제해서 카프카 클러스터 내 브로커들에 분산시키는 동작 ex. 토픽 생성시 --replication-factor 3 으로 지정하면 원본을 포함하여 총 3개의 replication 생성 Topic 자체를 복제하는 것이 아닌 Topic의 파티션을 복제를 하는 방식 내구성: acks 옵션, 메시지 디스크 저장 개발 편의성: Producer와 Consumer의 분리 다양한 기능과 3rd Party 를 통해 관리 편의성 kafka 구성 주키퍼(.. 2023. 3. 13.
SpringBoot3 - GraalVM Native Image Support ㅁ이번에 SpringBoot3 릴리즈 관련 내용을 보면서 Native Image Support, GraalVM, AOT 관련된 내용이 있어서 한번 찾아보고 간단히 테스트 해봤다. 간단히는 Java기반의 SpringBoot 어플리케이션 실행 시 Java에 대한 종속성 없이(빌드 결과물이 jar가 아님) 독립 실행 가능하도록 해주는 것으로 얘기할 수 있다. java도 go처럼 빌드하고 실행할 수 있다는 것을 처음 알게되었는데 몇 년전부터 spring-native라는 프로젝트로 진행이 되고 있었다가 이번에 정식 Support로 포함이 된 것이라 한다. GraalVM Native Image 컴파일된 Java 애플리케이션을 미리 처리(Ahead Of Time)하여 생성할 수 있는 독립 실행형 실행 파일입니다(JV.. 2023. 2. 1.
SpringBoot RabbitMQ 활용(Simple Queue, Pub/Sub) 비동기 통신에 오래전부터 많이 활용되는 RabbitMQ를 SpringBoot에서 활용하는 방법을 알아본다. 간단한 Simple Queue 방식, Pub/Sub 구현 방식 이렇게 2가지를 정리해보자. RabbitMQ RabbitMQ에 대해 간단히 정리하면 AMQP를 따르는 오픈소스 메세지 브로커이다. (AMQP: Advanced Message Queuing Protocol, Application과 Middleware Broker와의 메세지를 주고 받기 위한 프로토콜) RabbitMQ에서 주요한 개념은 아래와 같다. 1. Producer: 메시지 발행 주체 2. Consumer: 메시지 수신자 3. Queue: 메시지가 Consumer에 의해 소비되기 전까지 보관되는 장소 4. Exchange: Produc.. 2022. 12. 23.
SpringBoot Redis 활용 - Pub/Sub Redis는 DB,Cache 기능 외에 Pub/Sub기능을 제공한다. SpringBoot에서 Redis의 Pub/Sub을 어떻게 활용하는지 알아보고자 한다. Redis Pub/Sub의 특징을 간단히 다음과 같다 - 가볍고 빠르다 - 메시지 전송에 대한 보장을 못한다(Subscriber가 실시간으로 메시지를 받지 못하면 그 메시지는 버려진다) - 간단하고 가벼운 실시간 pub/sub 처리에 적합 SpringBoot에서 Redis Pub/Sub을 사용하기 위한 설정부터 알아보자 1. SpringBoot 설정 build.gradle에 redis 의존성을 추가한다. implementation 'org.springframework.boot:spring-boot-starter-data-redis' applicati.. 2022. 12. 16.
SpringBoot Redis 활용 - RedisTemplate, RedisRepository SpringBoot에서 Redis에 접근하기 위한 2가지 방법을 제공하는데 RedisTemplate, RedisRepoitory 이다. 이 2가지를 설정하고 테스트를 실행해보면서 SpringBoot에서 Redis 활용방법을 알아본다. 1. SpringBoot Redis 설정 먼저 Redis를 사용하기 위해 의존성 및 빈 설정을 진행한다. build.gradle에 redis 의존성을 추가한다. implementation 'org.springframework.boot:spring-boot-starter-data-redis' application.yml에 redis 접속정보를 설정한다. spring: redis: host: 127.0.0.1 port: 6379 # password: 'xxxx' # 비밀번호 있.. 2022. 12. 16.
SpringBoot Redis 세션 사용 SpringBootd에서 간단한 설정만으로 메모리 기반의 세션관리에서 Redis 기반의 세션관리로 적용이 가능하다. 세션 Storage로 Redis를 사용하면 토큰을 사용하지 않는 환경에서도 세션 공유에 대한 부담없이 유연하게 어플리케이션의 Scale-Out이 가능하다. Redis 구성 Redis를 자체를 테스트하는 것이 아님으로 간단하게 Docker로 구성한다. 아래 명령으로 Redis 컨테이너를 실행한다. docker run --name redis -p 6379:6379 -d redis 테스트용 Redis 준비는 이걸로 끝이다. SpringBoot 설정 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-data-redis' imp.. 2022. 9. 6.
반응형