일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- CompletableFuture
- asynccustomautoconfiguration
- Sleuth
- map
- spring3 spring2 traceid
- traceId
- awssecretsmanagerpropertysources
- kotlin
- java
- EnableWebMvc
- HashMap
- ResponseBody
- elasticsearch
- spring
- SpringMVC
- DeferredImportSelector
- spring MVC
- @FunctionalInterface
- java.util.list
- asyncconfigurer
- Spring Boot
- aws secretmanager
- list
- traceasynccustomautoconfiguration
- java list
- java lambda
- jpa
- micrometer tracing
- Spring JPA
- b3-propagation
- Today
- Total
목록spring (14)
du.study기록공간
오늘은 간단한 내용을 작성해보려 합니다. Spring 에서 로그 추적을 위해 traceId를 남기고자 sleuth를 사용하고 있습니다. 운영과정에서 일부 비동기 로직에서 traceId가 남지않는것을 확인하였고, 이 부분에 대해 확인한것을 기록하고자 합니다. 사실 해결법은 매우 간단하지만(검색하면 바로) 왜 동작하는지는 알고 바꾸고자 한번 작성하게되었습니다. 먼저 bean으로 생성하는경우를 확인하고자 합니니다. @Bean(name = "예시니까 세팅은 전부 1") public Executor threadPoolTaskExecutor() { ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); taskExecutor.setCorePoolSi..
프로젝트 상에서 logback 1.2.3을 사용하는 도중, logback-1,2,3,.. 등 하루에 하나씩 늘어나는 현상이 발견되어 이를 정리하고자 합니다. 우선 발단은 매일 같은시간대에 하나씩 증가하는 쓰레드였습니다. 이를 thread dump를 본 결과, logback thread가 점점 증가하는것을 알 수 있었고, 이는 TimeBasedRollingPolicy에서 발상하는것을 알 수 있었습니다. logback을 설정할떄 다음과같이 몇일까지 로그파일 개수를 관리할지 결정하는 설정을 추가할 수 있습니다. 7 예를 들어 이설정을 통해 7개를 관리하게 되면 자신이 지정한 일자또는 시간 등의 파일을 최근 7개의 파일만 관리하는 그런 설정이 됩니다. 저희 프로젝트에서는 일자별로 로그를 적재하고있었기에, 매일 ..
해당 블로그에도 나와있는 이슈 https://newbedev.com/why-does-jackson-2-not-recognize-the-first-capital-letter-if-the-leading-camel-case-word-is-only-a-single-letter-long Programming tutorials | Newbedev Checkout new tutorials and guides for programming languages Javascript, Python, Java, Golang, C++, PHP newbedev.com 최근 개발을 하던 도중 조금 특이한 경우를 만났습니다. 간단한 예제코드 import org.springframework.web.bind.annotation.GetMap..
이번엔 request dto에 enum타입을 받아올 때, Jackson에서 제공하는 기본 EnumDeserializer 외에 내가 지정한 setter를 사용하는 방법에 대해 기록해보려 합니다. (게시글에서 만큼은 네이밍의 고통을 받고싶지않아 조금 날림입니다.) 간단한 테스트 코드를 구성해봅니다. @RestController public class TestController { @PostMapping("/hello") public String matchEnumTest(@RequestBody RequestDto requestDto){ return "hello world"; } } @Getter public class RequestDto { private TestEnum testEnum; } public en..
요즘 중국서버 구축을 시작하는 단계에서 신규 프레임워크 관련 얘기가 나왔고, 별도의 톰켓 같은 것을 서버에 설치하고 싶지않아 내장 컨테이너 고려를 하는 도중, 기존에도 Spring을 사용하고 있었기에 Spring Boot를 테스트하게 되었습니다. 천천히 하나씩 작성하려하지만 이번에는 역시, 가장 기초부분인 생성부터 기록하려 합니다. 저의 경우 intellij로 설정중에 있습니다. 만약 본인이 Intellij 커뮤니티 버전을 사용하다면, 해당 사이트를 통해서 간단하게 SpringBoot 프로젝트 생성이 가능합니다. (intellij 유로버전이라면 인텔리제이 안에서 바로 생성할 수 있습니다.) https://start.spring.io/ 저는 web,maven을 사용할것이기에 다음과 같이 세팅 후, Gene..
스프링 웹 프레임워크를 사용하면서 헨들러 메서드를 사용할 때, 우리는 흔히 @Controller 또는 @RestController를 사용하고 있습니다. 스프링에서 @Controller, @RestController 를 살펴보면 아래와 같이 되어있습니다. @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @interface Controller { @AliasFor( annotation = Component.class ) String value() default ""; } @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Docu..
저번 포스팅에서 @Validated and BindingResult에 대해서 기록한적이 있습니다. https://duooo-story.tistory.com/11
이번에는 모델의 검증작업, 모델 바인딩 과정에서 발생되는 에러의 결과를 저장해주는 BindingResult에 대해서 기록하려 합니다. 만약 이런 해당사항의 컨트롤러,도메인이 있다고 가정하겠습니다. @GetMapping("/success-test") @ResponseBody public String errorBindTest(@Validated TestDomain domain , BindingResult bindingResult){ if(bindingResult.hasErrors()){ return bindingResult.getAllErrors().get(0).getDefaultMessage(); } return "success"; } @GetMapping("/error-test") @ResponseBod..
저번 글에서 ResponseBody응답으로 간단한 Spring타입에 대해서 리턴받는 방식을 기록한 적이 있습니다. (해당글은 여기에 :https://duooo-story.tistory.com/9) 이번에는 일반적으로 사용되는 Object를 json형태로 return 받는 방식에 대해서 살펴보려 합니다. @RequestMapping("/jackson") @ResponseBody public TestDomain helloObject() { // 뭔가를 받아와서 도메인을 만들었다 가정하고.. TestDomain tobj = new TestDomain("du",10); return tobj; } 만약 @EnableWebMvc ,WebMvcConfigurer등에대한 기본 설정만 한 상태라면 다음과 같은 에러를 맞..
API를 만들때, Json형태의 응답값을 내려주기 위하여 @ResponseBody 라는 어노테이션을 사용합니다. 이 어노테이션을 사용하면 본문 자체를 응답값으로 내려주기에 유용하게 사용하고 있지만. 정확하게 어떻게 동작하는지를 확인하기 위해서 내부 동작을 확인해보려고 합니다. 그중에서도 현재 RequestMappingHandlerAdapter 를 사용하는 케이스만 구현하고 있어 먼저 이 핸들러 어뎁터 기준으로 디버깅을 하여 확인한 결과를 작성합니다. 결론부터 간략하게 정리해보면 다음과 같습니다. 1. DispatcherServlet에서 핸들러 어뎁터(RequestMappingHandlerAdapter) 실행 2. HandlerMethodReturnValueHandler에서 RequestResponseBo..