일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- java
- elasticsearch
- jpa
- awssecretsmanagerpropertysources
- ResponseBody
- CompletableFuture
- kotlin
- Sleuth
- DeferredImportSelector
- HashMap
- spring MVC
- @FunctionalInterface
- traceId
- traceasynccustomautoconfiguration
- EnableWebMvc
- SpringMVC
- java lambda
- spring
- java list
- micrometer tracing
- aws secretmanager
- asynccustomautoconfiguration
- java.util.list
- Spring JPA
- b3-propagation
- map
- spring3 spring2 traceid
- Spring Boot
- asyncconfigurer
- list
- Today
- Total
목록전체 글 (69)
du.study기록공간
Spring Cloud Sleuth를 적용하는 과정에 확인한 간단한 에러를 기록해보고자 합니다. (나중에 또 기억 못할까봐) 기존 코드에는 비동기관련 Configuration이 있었고, AsyncConfigurer를 implements한 AsyncConfigurer 를 상속해놓은 Configuration이 있었습니다. 해당 코드에서는 기본 구현체 외에도 별도로 쓰레드풀을 선언한 상태였습니다.@Configuration@EnableAsyncpublic class AsyncConfiguration extends AsyncConfigurerSupport { @Override public Executor getAsyncExecutor() { ThreadPoolTaskExecutor exec..
언젠가 또 써먹을일이 있지않을까 싶어서 한번 AWS Secretmanager 적용방법을 정리해봅니다.직접 자바코드로 연동할수도있지만, property에 적용하는 방법으로 Spring Cloud 이용하는 방법을 정리하려합니다. 해당페이지를보면 spring 2.4 부터 지원되나 싶지만, 실제로는 이하 버전도 지원은 되는 상태입니다. 각 버전대로 적용방식을 기록해보겠습니다.(아마도 https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.4-Release-Notes 릴리즈노트에 나와있는대로spring.config.import 로 직접 설정을 가져올수 있게되면서 2.4이상의 가이드만 노출해놓은것같은 심증이..)github : https://github..
기존에는 Spring 2.x버전만 사용하고 있었기에 전부 Spring Cloud Sleuth 를 사용했고 이를 이용하면 별 문제없이 traceId가 로그에 노출됐습니다. 이번에 신규 프로젝트가 Spring 3.x를 사용했고, 3.x버전에서 2.x의 rpc를 호출하는 과정에 traceId 가 제대로 이어지지않아서 왜 그런지를 정리하고자 합니다. Spring 2.x버전의 경우 Spring Cloud Sleuth를 사용하고있고 b3-propagation format을 사용하고있습니다. Spring 3.x버전의 경우 Micrometer Tracing을 사용하며 dependency는 아래와 같습니다.그리고 이번 버전과는 다르게 w3c trace context format을 사용합니다. // trace ..
다른회사로 요청,응답을 기록하는 과정에, 필드의 로그값이 이중으로 찍혀있는 모습을 보고 내용을 정리해봅니다. 우선 발생된 상황을 정리해보면 다음과 같습니다. 1. request dto는 롬복의 @Getter와 @JsonProperty를 사용하고 있습니다. 2. 변수명중 두번째 글자가 대문자인 변수들이 있고, JsonProperty는 이 값을 다르게 사용하고 있습니다. 3. objectMapper.writeValusAsString() 를 활용하여 로그를 작성중에 있습니다. 이 경우, 의도했던 값과 다르게 유사한 변수명이 추가로 String에 노출되는 현상이 발생됩니다. lombok의 getter를 사용하면서 objectMapper.writeValusAsString()을 사용할때 발생될 수 있는 문제점을 ..
이 글은 driverClassName을 'com.mysql.jdbc.Driver'에서 'software.aws.rds.jdbc.mysql.Driver'로 바꾸는 과정에 발생된 이슈를 작성하고자 합니다. 우선 이슈가 발생된 과정을 정리해보면 다음과 같습니다. 1. driverClassName 변경 'com.mysql.jdbc.Driver' -> 'software.aws.rds.jdbc.mysql.Driver' 2. DATETIME 필드를 mybatis를 통해서 String으로 리턴하는 상태. 3. 로직상에서 String으로 받은 값을 아래 코드를 통해서 변환 DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S"); Lo..
새로운 프로젝트를 실행하면서 로컬 캐시 라이브러리인 Ehcache 를 사용하는 일이 있었습니다. 기존에도 자주 사용하는 라이브러리 였기에 큰 걱정없이 사용했으나, 다음과 같은 에러가 갑자기 노출되기 시작했습니다. The JVM is preventing Ehcache from accessing the subgraph beneath 'transient java.util.HashMap$Node[] java.util.HashMap.table' - cache sizes may be underestimated as a result 음.. 우선 원인이 되는 프로젝트의 코드를 찾아봅니다. ehcache 내부의 ObjectGraphWalker 클래스에서 아래 코드에서 해당 에러를 뱉고있었습니다. 예시를 위해서 아래 테..
이번엔 java프로젝트에서 sentry environment 설정 코드를 한번 보려고합니다. 프로젝트를 진행하면서 sentry설정을 하는도중, local에서 계속 production으로(찾고나니 default설정이 production이네요) 작성이 되어있는 부분이 거슬려서 environment 설정은 어떻게 하는지 한번 확인해봤고 이를 기록하고자 합니다. 우선 결론부터 작성하면 저는 아래와 같이 적용하였습니다. - 리소스 아래에 sentry.properties 를 생성하여 아래 문구 적용 dsn= 본인의 sentry의 dsn를 사용합시다! environment=local servername=project이름 - java 실행의 변수를 담는곳에 -Dsentry.environment=${SPRING_PROF..
팀에서 recode를 api request, response 를 사용하면서 @Builder를 붙여 사용을 하게되었습니다. 다만 테스트 코드를 작성하는 과정에서 lombok이 정상동작 하지않았고, 이를 찾기위해 관련 게시판을 뒤지다가 원인을 찾을 수 있었습니다. https://youtrack.jetbrains.com/issue/IDEA-266513 해결방안 : intellij 버전을 2021.3 에서 2022 이상의 버전으로 변경 java 의 버전을 실험적으로 올렸는데... intellij 의 버전은 그대로둬서 발생한 이슈였습니다.
오늘은 간단한 내용을 작성해보려 합니다. Spring 에서 로그 추적을 위해 traceId를 남기고자 sleuth를 사용하고 있습니다. 운영과정에서 일부 비동기 로직에서 traceId가 남지않는것을 확인하였고, 이 부분에 대해 확인한것을 기록하고자 합니다. 사실 해결법은 매우 간단하지만(검색하면 바로) 왜 동작하는지는 알고 바꾸고자 한번 작성하게되었습니다. 먼저 bean으로 생성하는경우를 확인하고자 합니니다. @Bean(name = "예시니까 세팅은 전부 1") public Executor threadPoolTaskExecutor() { ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); taskExecutor.setCorePoolSi..
코드리뷰를 하던도중 간단하면서도 실수하기 좋은 부분을 기록하고 넘어가고자 합니다. Arrays.asList 나 Collections.singletonList 등을 이용하여 List를 생성하는 경우를 종종 보고있는데요 이번엔 Arrays.asList를 사용해서 add를 하는경우에 발생하는 에러를 기록하고 넘어가고자 합니다. 예시코드는 아래와 같습니다. List list = Arrays.asList("A","B"); list.add("C"); System.out.println(list); 이 경우 [A, B, C] 가 출력될거라 생각할 수 있지만, 결과는 아래 에러를 맞이하게 됩니다. java.lang.UnsupportedOperationException 왜 그럴까? 를 확인하기위해 Arrays.asList..