반응형

전체 글 253

세무민의 코딩일기 : Spring WebClient doOnError와 onErrorResume 차이

doOnError와 onErrorResume은 Spring WebFlux의 WebClient와 같은 반응형 프로그래밍에서 오류를 다루는 데 사용되는 메서드인데, 목적과 동작 방식에서 차이가 있어서 간단히 소개해보려고 함doOnError로깅, 메트릭 기록, 알림 전송 등과 같이 오류가 발생했을 때 오류를 처리하지 않지만 발생했다는 사실만 감지하여 추가 작업을 수행할 수 있는 매서드즉, 오류를 처리하거나 복구하지 않고, 오류가 발생했다는 사실을 감지해 추가 작업을 수행하고 이후 오류는 스트림 아래로 그대로 전달반환 값은 없으며 보통 에러 로그를 남기기 위해 사용됨 doOnError 예시 코드WebClient webClient = WebClient.create("https://sg-moomin.tistory...

세무민의 코딩일기 : Spring WebClient에 대해 알아보자

안녕하세요 세기무민입니다. RestTemplate deprecated 된다는 걸 알고 있었으나, 따로 WebClient에 대한 포스팅을 한 적이 없던거 같아서오랜만에 한번 포스팅을 해보려고 합니다.1. Spring WebClient?Spring 프레임워크에서 제공하는 비동기 및 논블로킹 방식의 반응형 HTTP 클라이언트를 의미비동기와 논블로킹을 통해 대규모 트래픽을 효율적으로 처리가 가능하며 MSA 환경 혹은 고성능 어플리케이션에서 유용함Spring WebFlux 모듈의 일부이며, 기존 Restemplate를 대체하기 위해 설계됨 2. Spring WebClient vs RestTemplate특징WebClientRestTemplate동작 방식비동기, 논블로킹동기, 블로킹기반 기술WebFlux (반응형)S..

[오류] Correct the classpath of your application so that it contains compatible versions of the classes org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer and org.apache.coyote.AbstractProtocol 문제 해결

오류Correct the classpath of your application so that it contains compatible versions of the classes org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer and org.apache.coyote.AbstractProtocolTomcatWebServerFactoryCustomizer와 coyote.abstractProtocol 간 버전 충돌에 따른 문제     tomcat Version Upgrade 수행build.gradle 아래 내용 추가하였음ext['tomcat.version'] = '11.0.2' 근데 또 다른 문제가 발생하게 ..

[오류] java.lang.ClassNotFoundException: org.hibernate.dialect.Oracle10gDialect 해결

현 상황 및 해결 방안application.ymljpa: database-platform : org.hibernate.dialect.Oracle10gDialect이전에 사용한 Spring Boot를 3.2.0 버전을 사용하고 있었다. 3.3.0 버전으로 올리면서 발생된 문제였고, 이에 따라 Spring Version 변경에 대한 이슈라고 생각했다. 또한 오류 메세지를 해석해보면 말 그대로 Oracle10gDialect 클래스를 찾을 수 없다는 의미인데알고보니 Spring Boot 3.2.x 이상 버전부터 명시적인 Dialect 설정을 할 경우 위와 같은 문제가 발생한다고 한다.- https://github.com/spring-projects/spring-framework/issues/31889 내용..

[Spring] QueryDsl, java17 Q파일 생성 안되는 이슈 해결

회사에서 업무를 수행하다가 Q파일이 생성이 안되서 원인을 분석했고, 나처럼 멍청한.. 실수하지 않았으면 하는 마음에 끄적여 보려고 한다. 원인 및 분석블로그 포스팅에서 해결 방안에 대해서 나 또한 다 시도를 해봤다. 1) build.gradle 의존성 주입 및 경로 설정 (유지)기존에 사용하던 코드와 동일하여 별도 설정하지 않음 2) Intelij > 프로젝트 구조 > QClass가 존재하는 디렉토리를 source로 설정(변화 없음)기존에 이미 설정되어 있음 3) Intelij > Setting > Build > gradle > 빌드 설정(Gradle -> Intelij) 변경 (시도하지 않음) 근본적인 Q파일 생성에는 영향을 주지 않는 설정 또한 변경하더라도 파일 생성 위치가 바뀌는 것으로 별도 시도하..

[Spring] Composite id class must implement Serializable 오류 해결

안녕하세요 세기무민입니다. 오랜만에 오류 해결 포스팅으로 찾아왔습니다. 오류 현상Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Composite id class must implement Serializable: ~~~ 위의 오류가 발생하는 원인은 기본키를 복수로 지정했을 때 직렬화를 해야한다는 의미입니다. 보통 키를 복수로 지정할 경우 복합키를 사용하게 되는데 복합키의 경우도 직렬화가 필요하다. JPA는 엔티티를 영속성 컨텍스트와 2차 캐시에 저장하여 관리하는데 복합키를 전송하거나 저장하려면 직렬화가 필요 분산 처리 시스템(클러스터링 환경)에서 활용이 가능한..

[프로그래머스] 덧셈식 출력하기

문제 내용 문제 풀이a, b 값을 더하여 c를 구하면 된다.다만, a + b = c 구조를 문자열로 추출해야 한다는 점이 포인트이다.나는 정수 포멧팅 방법을 이용하여 처리하였다.a, b = map(int, input().strip().split(' '))str = '%d + %d = %d'print (str%(a, b, a+b))통과를 한 것은 맞으나, 더 간결하게 사용하는 방법이 있길레 참조해봤다.print(f"{a} + {b} = {a + b}")위의 방식의 경우 파이썬 3.6 이상부터 파이썬에 f-string을 사용할 수 있게 되었는데 포멧팅 방식보다는 조금 더 간결하게 사용할 수 있으며, 요즘 많이 사용하는 방식이라고 한다. 이에 따라 향후에는 f-string을 활용한다면 조금 더 쉽게 풀 수 있..

[VScode] VScode java CheckStyle 적용하기

서론최근 회사 업무 외적으로 주변 지인과 함께 팀 프로젝트를 틈틈히 하고 있는데 개발 툴로는 Vscode를 사용하고 있다.개발 툴이라고 하기에는 편집기의 기능을 가진 Vscode로 사용하면서 생각외로 플러그인의 의존성이 커지고 있다. 백앤드 개발을 하다보면 코드 정렬을 위해 CheckStyle을 적용하는 편인데 VScode에서도 CheckStyle 적용이 가능한 방법이 있어서 소개해보려고 한다. Java Formatter 설정 Java Formatter 설정 > Settings.json 클릭  Settings.json 설정 파일 추가 "java.format.settings.url": "https://raw.githubusercontent.com/google/styleguide/gh-pages/eclip..

반응형