분류 전체보기
-
[Spring] JobRegistryBeanPostProcessor (not eligible for auto-proxying) 관련 경고 트러블 슈팅개발 2024. 9. 11. 21:02
배치 어플리케이션이 필요해서 Spring Boot 3.2 버전으로 Spring Batch 프로젝트를 만들었다.그런데 못보던 경고 로그가 떠서, 해당 이슈와 관련하여 문제부터 원인파악, 근본적인 해결까지 정리해 보았다.문제스프링 배치 5.0 이상 버전부터는 기존의 배치 환경을 구성할 때 사용하는 @EnableBatchProcessing 어노테이션을 프로그래밍 방식으로 대체하는 DefaultBatchConfiguration 클래스를 지원하는데, JobRepository등에 필요한 DataSource를 따로 설정하기 위해 DefaultBatchConfiguration 클래스를 상속하여 아래와 같이 구성하였다.package day.mercury.batch;import ...@Configurationpublic ..
-
[Spring Webflux] #4 스프링 웹플럭스의 코틀린 코루틴 지원 내부 구현 뜯어보기개발 2024. 7. 29. 05:23
스프링 진영에서 코틀린은 참 매력적인 언어다. 이미 많은 유명한 서비스들이 코틀린 스프링을 사용하고 있고, 개인적 경험에서는 자바의 장황한 문법에 비해 간결해진 코드와 Null Safety가 정말 큰 장점으로 느껴진다. 특히 웹플럭스에서, 선언형(declarative)으로 메소드 체이닝을 통해 코드를 작성하는 기존의 Reactor와 달리 코틀린 코루틴은 명령형(imperative)으로 Non-blocking 코드를 간단 명료하게 작성할 수 있다. Reactor가 Kotlin Coroutines과 어떻게 호환 되는지, Spring은 코루틴을 어떻게 지원하는지, 그리고 Spring Webflux 어플리케이션에서 코루틴을 어떻게 사용하는지 정리해보았다. 본문을 요약하면,Reactor(Mono/Flux) Co..
-
24년 6월 회고 - 푸른 낭만을 선물할게일상 2024. 7. 8. 22:28
덥고 습하다. 겨울에는 여름을 기다렸는데 이젠 막상 겨울이 그립다.참 아이러니하다. 그치만 그런 모순조차 좋아한다. 모두의 시간이 각자 다르게 흐르듯 나는이제서야, 이제서야 비로소 겨울이 끝난 것 같아서.불확실한 봄 맞이를 결심하게 해준 당신에게 이 곡을 전한다.한로로 - 「입춘」 MV갈 곳 잃은 초여름 행운을 나는 왜 그리고 사랑했는지나를 던져버린 곳은 너의 유월일지 유월의 너일지사랑하는 나에게 폭우 아닌 여우비를 선물하고 싶다.사랑하지 않는 나에게 기어코 봄을 선물하고 싶다.2024.06.01 - 남산한옥마을 출사자주가는 현상소인 고래사진관에서 출사를 모집해서 신청했다.현상소 직원분 인솔하에 사진관에서 멀지 않은 남산한옥마을로 출사를 갔는데, 간만에 날씨가 좋았다.근데 남들 다 수동카메라인데 나만 자..
-
24년 5월 회고 - 비가 내리면 우산 없는 그대가일상 2024. 6. 3. 05:26
철 지난 봄비가 그치지 않고 퍼부었던 5월, 이유도 모를 장염과 몸살에 걸려 많이 아팠다.진짜 이러다 죽겠다 싶었다. (아마 엄살이겠지만)그래서 그런지 쏜애플의 음악 서사를 관통하는 '생존'이라는 키워드가 머리에 자꾸만 맴돈다. "그냥 여기에 있어줘, 깨어나지 말고 차라리 이대로 죽어줘" - 아가미"네가 대신 아파줘, 그럼 나는 살거야" - 낯선 열대"나는 지금 여기에 살아있어, 차는 숨을 내쉬며 살아있어" - 아지랑이"만약 우리 마지막으로 남으면 어쩌나, 그 땐 너의 눈을 볼거야" - 멸종"살아가자, 너와 나의 생명을 다해" - 게와 수돗물 그대가 떠날까봐, 차라리 그대가 죽어줬으면 하던 노래가그대가 떠나는 것은 필연적이고, 그 사실을 받아들여야만 살아남을 수 있다는 것을 깨달으며 성장하기까지. 나는 ..
-
기타랑 필름 사러 간 일본 후쿠오카 여행일상 2024. 6. 3. 03:11
음악 취향 때문인지 단 한대 가지고 있는 기타가 펜더 재팬 89 텔레캐스터다. 아무래도 텔레병이 아니었을까.이걸로 소마 수료식에서 공연도 하고 밴드 친구들이랑 공연도 하고 추억이 많지만 기타 상태가 영 좋지 않아 새로 사기로 마음 먹었다.또 두달 전 인가? 후지 필름에서 필름 하나를 단종시켰다. 일본 가서 오프라인 재고라도 털어와야겠다고 생각했다.사실 그래서 4월에 요루시카 라이브 할 때 일본을 가려했지만 티케팅을 말아먹었다.일본 휴대폰 번호 인증도 필요하대서 부끄러움을 무릎쓰고 일본에 사는 사촌누나한테 부탁까지 했는데,, 하 너무 더워지기 전에, 그리고 오프라인에 필름이 얼마 안 남았다는 소식을 듣고 기타랑 카메라 둘 다 좋아하는 소마 같이 했던 동생 한 명 납치해서 월요일에 금-토 1박 2일로 키타큐..
-
24년 4월 회고 - 못 죽는 기사와 비단 요람일상 2024. 5. 1. 16:31
날씨가 정말 제멋대로다.이번 4월은 바쁘게 살아서 시간이 빨리 지난 탓인지 날씨 탓인지는 몰라도 유독 벚꽃이 빨리 진 것만 같다. 인생의 유통기한에 대해 생각하는 요즘 나를 살려내는 노래.루시 라이브는 어쩌다가 예전에 딱 한번 가봤는데, 기회되면 언젠가 단콘 정도는 가보고 싶긴하다.LUCY - 못 죽는 기사와 비단 요람가지 마나와 네 약속처럼나는 죽지 않는 너일 테니까외로운 괴로운 그날들에우리 둘이었으니까2024.04.06 - 연남동대학 친구들이랑 봄맞이 옷 구경한다는 핑계로 홍대에서 만났다.진작 옷가게는 몇군데만 들리고 벚꽃이 너무 예쁘게 펴서 카메라 챙긴김에 연남동에서 사진이나 찍고 놀았다.이날 필름만 3롤 썻다,,,나중에 친구들이 내가 찍어준 사진으로 카톡 프사를 다 바꿨더라. 뭔가 이런거 기분이 ..
-
[Spring Webflux] #3 스프링 웹플럭스에서 AOP 제대로 사용하기개발 2024. 4. 11. 22:07
스프링의 핵심 요소 중 하나인 AOP(관점 지향 프로그래밍)는 횡단 관심사(cross-cutting concerns)를 모듈화 한다. 간단히 말하면 흔히 스프링에서의 선언적 트랜잭션(@Transactional)처럼 여러 서비스/비즈니스 로직에 대해 공통적으로 사용하는 부분을 따로 분리해서 관리한다고 생각하면 될 것 같다. 일반적인 AOP 구현 방법 스프링에서 AOP는 @AspectJ를 사용해 어노테이션 기반으로 작성할 수 있다. 간단한 예시로 함수 실행 시간을 측정하는 로직을 AOP를 이용해 구현해 보겠다. 일단 우리가 흔히 아는 Spring MVC의 경우 아래와 같이 구현 할 수 있다. @Aspect @Component public class ExecutionTimerAspect { private fi..
-
[Spring Webflux] #2 내가 스프링 웹플럭스를 공부한 방법개발 2024. 4. 10. 00:32
작년 9월, 자바의 새로운 LTS 버전인 자바 21가 출시 되면서, 함께 정식 릴리즈 된 가상 스레드가 웹플럭스를 대체할 수 있을 것인지가 주변 개발자들과의 이야기에서 항상 화두에 올랐다. 반년이 지났지만 아직 시기 상조인 것 같다. 스프링의 큰 장점인 거대 자바 생태계가 온전히 가상 스레드를 지원 못하는 탓일까 싶다. 특히 Spring Data JPA가 디폴트로 사용하는 커넥션 풀 라이브러리 HikariCP가 아직 가상 스레드를 지원하지 않는다. (관련 PR: https://github.com/brettwooldridge/HikariCP/pull/2055) 그리고 식품 e커머스로 꽤 인지도 있는 모 회사의 어느 개발팀에서도 가상 스레드 하나보고 자바 21로 전환을 시도했지만, 여러 한계로 다시 롤백했다..