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

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 클래스를 추상 클래..

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 공부를 하다보니 영한님에 대한 궁금증이 생기..

Java PlayGround NEXTSTEP 자바 플레이그라운드 with TDD, 클린 코드에서 새롭게 배우고 깨닫게 된 내용들을 기록한 글입니다. . Part01. 단위테스트, TDD . 시작 소트웍스 앤솔러지에서 말하는 객체 지향 프로그래밍을 잘하기 위한 9가지 원칙 한 메서드에서 오직 한 단계의 들여쓰기만 허용하자 else 예약어를 사용하지 말자. 모든 원시 값과 문자열을 포장하자. 한 줄에 점을 하나만 찍자. 축약과 같이 줄여 사용하지 말자. 모든 엔티티를 작게 유지하자. 3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 말자. 일급 컬렉션을 사용하자. getter/setter/프로퍼티를 사용하지 말자. 단위 테스트 JUnit는 프로덕션 코드를 편리하게 테스트할 수 있도록 도와준다. JUnit 5...

JUnit 5 Parameterized Tests Guide to JUnit 5 Parameterized Tests를 통해 Parameterized Test를 학습하며 정리한 글입니다. . 테스트 코드는 만들었는데 여러 값으로 테스트를 해보고 싶은 적이 있지 않은가?! 😯 코드가 중복되는 건 싫은데.. . 그렇다면 Parameterized Test를 사용해볼 때이다.🕵 Parameterized Test는 서로 다른 인수로 동일한 테스트를 여러 번 실행해볼 수 있는 유용한 기능이다. 일반 테스트와 다른 점은 @ParameterizedTest를 사용하는 것과 @ValueSource에 인수를 정의해주는 것뿐! Dependencies pom.xml org.junit.jupiter junit-jupiter-par..

Java Code Conventions 코드를 작성하면서 대부분 이런 고민을 해보았을 것이다. "여기를 띄어 써야 깔끔할까?", "여기는 줄 바꿈을 해야 깔끔할까?" 등등.. 맞춤법이 틀린 것 처럼 코드가 찝찝하게 느껴진 적이 있지 않은가!! . 그렇다면.. 코우드 컨붼션(Code Conventions)이 필요한 때이다. ✏✏✏ . Google Java Style Guide 를 읽어보면서 참고할만한 내용만 간략하게 정리해 보았다. 캠퍼스 핵데이 Java 코딩 컨벤션 도 참고해보면 좋을 듯하다. . 추가로 Code Convention에 참고가 될만한 Clean Code 내용들을 간략하게 남겨보았다. Source File 모든 소스 파일은 UTF-8로 인코딩하기 Unix는 새 줄 문자를 LF(Line Fee..