Spring Boot(42)
-
Spring Cloud Gateway Filter
이번에는 API Gateway에 Filter를 적용시켜보겠다 기본적으로 다양한 종류의 Filter를 기본적으로 제공하지만 이번 글에서는Custom Filter에 대하여 다루겠다. 우선 필터의 종류는 2가지가 있다 전체에 기본적으로 적용되는 Global Filter와 각각의 서비스에 적용 시키는 일반 Filter GlobalFilter 예시) 1.filter를 바로 bean으로 등록하는 방식import lombok.extern.slf4j.Slf4j;import org.springframework.cloud.gateway.filter.GatewayFilterChain;import org.springframework.cloud.gateway.filter.GlobalFilter;import org.spring..
2024.10.29 -
Spring Cloud Gateway
우선 Spring Cloud Gateway는 Spinrg을 이용한 Api Gateway이다. API Gateway란? Client가 Service에 직접 요청을 보내는 것이 아니라 API GateWay에 요청을 보내고 API Gateway가 해당 요청을 지정된 Service에 보내고 답을 받아 Client에 보내주는 서비스이다.즉 일종의 Proxy역할을 수행하는 서비스이다. Client와 Service간의 직접 통신의 경우 API Gateway를 사용 할 경우MSA같이 수 많은 작은 서비스로 이루어진 경우 엔드포인트를 한 번에 관리를 하고 또한 공통으로 수행하는 인증/인가, 로깅 등의 작업을 대신 처리해서 중복 개발을 줄일 수 있습니다. 간단한 구현 예시) 우선 API Gateway에 등록할 간단..
2024.10.25 -
Redis Cache
Spring Boot에서 Redis를 이용해서 캐싱을 하는 방법을 알아보겠다 우선 기본적으로 redis를 연결해주고캐시에 필요한 라이브러리를 추가해준다.implementation 'org.springframework.boot:spring-boot-starter-cache' package com.example.mvc.redis;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;import org.springframework.boot.autoconfigure.cache.RedisCacheManagerBuilderCustomizer;import org.sprin..
2024.10.11 -
WebMVC와 WebFlux를 동시 사용 할 경우 WebSocket
WebFlux를 이용하여 Reactive 기반의 WebSocket을 구현 하려고 했는데예제들을 가져와 사용하니 오류가 났다 그래서 아예 신규 프로젝트를 만들어서의존성을 다 뺐더니 작동을 했다그래서 어느 모듈 때문인지 확인하기 위해 하나씩 넣어서 확인한 결과 implementation 'org.springframework.boot:spring-boot-starter-web'때문에 오류가 난 것을 확인 할 수 있었다 https://mangkyu.tistory.com/257 [Spring] WebMVC와 WebFlux 의존성이 모두 존재하는 경우의 동작 방식이번에는 Spring WebMVC와 WebFlux의 의존성이 모두 존재하는 경우에 어떻게 동작하는지 살펴보도록 하겠습니다. 1. WebMVC와 WebF..
2024.08.14 -
OSIV
바로 필요 없는 데이터에 Proxy를 넣어두는 Lazy Loading성능을 위해 쓰는 게 좋다지만 강제 초기화니 DTO니 불편해 보인다 그래서 OSIV(Open Session in View) 가 있다. 이는 데이터 베이스 세션을 View까지 가지고 가서Lazy Loading 문제를 해결하기 위한 방안 중 하나이다.기본적으로 사용함으로 설정 되어 있으며 사용하기 싫으면 application.properties에서 사용 않함을 추가해야 한다. 사용하는 경우spring.jpa.open-in-view=true 안 하는 경우spring.jpa.open-in-view=false 다만 영속성 컨텍스트의 변화 감지의 기능은 지원하지 않는다 간단한 예시로package com.example.demo.mySQL;i..
2024.08.03 -
@Transactional 과 영속성
Spring Data Jpa에서 @Transactional은 단순히 정상 작동 시 commit 그리고 에러시 rollback을 진행하는 줄 알았다. 그런데 @Transactional을 붙이면 영속 상태인 Entity의 변경 감지가 일어난다 따라서 Entity를 변경하고 따로 save등의 추가 조치가 없더라도 정상적으로 Trasaction이 닫히면 DB의 값이 수정 된다. 예제를 하나 보겠다 void persist_test(Long id) { sqlEntity entity = repo.findById(id).get(); entity.setTitle("TESTSINGSN"); } @Transactional(transactionManager = "myTran") ..
2024.08.02