
Enum Class의 동시성 이슈 troubleshooting #1 Enum Class가 싱글톤 성질을 가지고 있기 때문에 발생했던 동시성 이슈를 기록하고자 한다. (동시성 이슈﹖ 다수의 스레드가 동시에 같은 인스턴스 필드 또는 공용 필드 값을 변경하면서 발생하는 이슈) . 그 이슈는 바로바로.. 🥁🥁🥁 . ... Issue 구매 완료 알림 푸시가 내가 주문한 상품명이 아닌 다른 사람이 주문한 상품명으로 전달된 이슈였다. 예를 들어 사용자는 불고기버거 기프트콘을 주문했지만, 무소음 키보드 주문이 완료되었다는 구매 완료 알리 푸시를 받게 된 것이다. 정상 푸시 메시지 불고기버거 세트 기프트콘 주문이.. 문제의 푸시 메시지 무소음 키보드 주문이.. Problem 푸시 톡 클래스는 Enum 클래스인데, 아래와..

Spring Batch Test Spring Batch를 테스트해 보는 시간을 가져보려고 한다. Spring Batch와 아직 어색어색하니까..😬 조금씩 친해지면서 테스트 관련 내용을 업데이트할 예정이다.🙄 준비 배치 테스트를 위해 spring-batch-test 의존성이 필요 testImplementation("org.springframework.batch:spring-batch-test") 통합 테스트 통합 테스트에 필요한 어노테이션들을 먼저 간략히 살펴보면, 일반 스프링 테스트 코드를 작성하면서 많이 보았던 익숙한 어노테이선들도 있을 것이다. @Slf4j 로깅을 위해 선언 @ExtendWith(SpringExtension.class) Junit5의 라이프사이클에 Test에서 사용할 기능 확장을 위해..

Spring Batch 향로님 Spring Batch 가이드 보고 따라하기 jojoldu/spring-batch-in-action 배치 기능 활성화 보통 실시간 처리가 어려운 대용량 데이터나 대규모 데이터일 경우 배치를 활용 배치기능 활성화를 위해 프로젝트 Application 클래스에 @EnableBatchProcessing 를 추가해주자. @EnableBatchProcessing @SpringBootApplication public class SpringBatchTestApplication { public static void main(String[] args) { SpringApplication.run(SpringBatchTestApplication.class, args); } } Job 생성하기 ..

Java PlayGround [Java] 자바 플레이그라운드 with TDD, CleanCode 후기 (2) NEXTSTEP 자바 플레이그라운드 with TDD, 클린 코드에서 새롭게 배우고 깨닫게 된 내용들을 기록한 글입니다. Part02. Inheritance, Abstract, Functional programming Inheritance 상속을 통한 중복 코드 제거 중복 코드를 별도의 클래스로 분리해보자. extends 부모 클래스의 모든 필드와 메소드를 자식 클래스가 상속하도록 지원하는 keyword 상속을 할 경우 멤버 필드와 메소드를 하위 클래스에서 그대로 상속 Abstract 추상화를 통한 중복 제거 역할이 비슷한 메서드를 추상화 시켜 중복을 제거해보자. abstract 클래스를 추상 클래..

Vue 회사에서 front 업무(?)도 살짝 담당하게 되어 Vue.js를 공부하게 되었다. 아주 옛날에 배웠던 것 같긴 한데.. 아무것도.. 생각이 나지 않는다... Haha.h...a... 그리하여 Inflearn Vue.js 시작하기 - Age of Vue.js 강의를 듣게 되었고, 업무를 하면서 틈틈이 참고하고자 간략하게 내용들을 정리해 보았다. 아주 쉽고 빠르게 Vue.js 세계를 이해시켜주신 장기효님께 감사를.. 👏🏻👏🏻👏🏻 What is the Vue View: 눈에 보이는 화면 (화면의 요소는 HTML) HTML은 DOM을 이용해서 javascript로 조작 -> Reactivity DOM Listeners: View에서 사용자 이벤트는 Vue의 DOM Listeners로 청취 Modal: ..

Refactoring With IntelliJ Change Signature 클래스의 생성자에 parameter 추가 Convert Anonymous to Inner Class 익명 클래스를 내부 클래스로 변환 New 또는 생성자에 커서를 위치시키고 리팩토링 Before public class Class { public Interface method() { final int i = 0; return new Interface() { public int publicMethod() { return i;} }; } } After public class Class { public Interface method() { final int i = 0; return new MyInterfaceClass(i); } } p..

2021년 늦은 회고 함께 자라기 책을 읽고 나서 회고의 중요성을 알게 되었고, 첫 번째 회고 글을 작성해 보려고 한다. . 지금은 2022년 상반기가 지나가고 있지만, 늦은 2021년도 회고를 먼저 작성해보려고 한다. 놓친 기억들이 있다 보니 내용이 부족할 수 있지만.. 남은 기억만이라도 간직하고 싶다..😭 . 내가 어떤 것을 했고, 어떤 것을 느끼고, 어떤 교훈을 배웠는지 짚어보면서 나 자신을 개선해보자 💪🦸♂️🦸♀️ Turning Point 2020년 12월 JAVA/Spring 백엔드 개발자로 제대로 된 첫 입사(?)를 하고, 프로젝트에 JPA가 적용되어 있어서 영한님의 자바 ORM 표준 JPA 프로그래밍 책을 읽게 되었다. . 책을 읽으면서 JPA 공부를 하다보니 영한님에 대한 궁금증이 생기..

회고 방법 함께 자라기(김창준 저) 책을 읽고, 회고를 시작해보려고 한다. 그 전에 회고는 어떻게 작성하는 것인지 간략하게 정리해보았다. 회고를 통해 더 나아진 나를 만들어보자 !! 💪🦸♂️🦸♀️ . YWT time : within 1 minute each 한 일 일을 통해 명확하게 알게되었거나 이해한 부분들을 정리 배운점 배운점들과 시사점들을 정리 앞으로 할 일 응용에 초점을 맞추어 배운 것들을 어디에/어떻게 적용할지 정리 . AAR(After Action Review) time : Within 10~30 minutes 의도한 결과는 무엇이었는가? (초기 목표) 실제 어떤 일들이 일어났는가? (현실) 계획과 실제 결과의 차이는 왜 발생되었는가? (배운점들) 지속, 개선 혹은 포기할 것들은 무엇인가,..