스프링 카프카 Batch Consumer - 의도치 않은 리스너 호출 by Yaboong on June 7, 2020 개요 스프링 카프카 Batch Consumer 를 사용하는데, 의도하지 않은 @KafkaListener 호출이 발생했다. 스프링 카프카 소스를 까본 내용을 정리해보았다. read more
스프링 - 생성자 주입을 사용해야 하는 이유, 필드인젝션이 좋지 않은 이유 by Yaboong on August 29, 2019 개요 Dependency Injection (의존관계 주입) 이란 Setter Based Injection (수정자를 통한 주입) Constructor based Injection (생성자를 통한 주입) 스프링에서 사용할 수 있는 DI 방법 세가지 생성자 주입을 이용한 순환참조 방지 생성자 주입이 테스트 코드 작성하기 좋은 이유 read more
자바 제네릭 이해하기 Part 1 by Yaboong on January 19, 2019 개요 제네릭이란? 제네릭을 사용하는 이유 제네릭을 사용할 수 없는 경우 제네릭 메서드란? 제네릭 타입 제한하기 (Bounded Type Parameter) read more
스프링 - Spring Cloud Config 예제 by Yaboong on November 25, 2018 개요 Spring Cloud Config 스프링 설정파일을 외부로 분리할 수 있는 스프링 클라우드 Config 에 대한 핸즈온 (Hands-On) 예제 read more
디자인패턴 - 프록시 패턴 by Yaboong on October 17, 2018 개요 프록시 패턴에 대해 알아본다. Coursera 의 디자인패턴 강의 를 기반으로 작성했다. read more
디자인패턴 - 어댑터 패턴 by Yaboong on October 15, 2018 개요 어댑터 패턴에 대해서 알아본다. Coursera 의 디자인패턴 강의 를 기반으로 작성했다. Rectangle vs LegacyRectangle, Duck vs Turkey 같은 터무니 없는 예제가 아닌 조금 더 실질적인 예제를 사용해본다. JDK 에 사용된 어댑터 패턴을 살펴본다. read more
디자인패턴 - 싱글톤 패턴 by Yaboong on September 28, 2018 개요 싱글톤 패턴의 다양한 구현 방법을 알아본다. Thread Safe 한 싱글톤 패턴의 구현도 포함한다. volatile 과 memory consistency 도 조금 알아본다. 순서요약 Eager Initialization (Early Loading) Static Block Initialization Lazy Initialization Thread Safety Double-Checked Locking Bill Pugh Solution Reflection 을 이용해 싱글톤 부숴버리기 Enum 싱글톤 싱글톤과 직렬화 싱글톤 패턴의 실제 사용 예 read more
디자인패턴 - 템플릿 메소드 패턴 by Yaboong on September 27, 2018 개요 객체지향 디자인 패턴 중 템플릿 메소드 패턴에 대해 알아본다. AbstractMap 에 사용된 템플릿 메소드 패턴을 살펴본다. 템플릿 메소드 패턴 구현시 추상클래스가 아닌 인터페이스를 사용하면 안되는가? read more
자바8 에서 인터페이스와 추상클래스의 차이 by Yaboong on September 25, 2018 개요 자바8 부터 인터페이스도 메소드 구현부를 가질 수 있게 되면서, 추상클래스와 인터페이스의 차이가 모호해졌다. 이 부분에 대해서 정리해본다. read more
자바 메모리 관리 - 가비지 컬렉션 by Yaboong on June 9, 2018 개요 Java 가비지 컬렉션에 대해서 공부한 내용을 정리해본다. Java 에서 메모리 관리는 어떻게 이루어지는지 이해하고 있으면 좋다. 자바 메모리 관리 - 스택 & 힙 를 먼저 읽는 것을 추천한다. 모니터링 툴 VisualVM 과 VisualGC 플러그인에 대해 알아본다. Metaspace, Young/Old Generation 에 대해 알아본다. 가비지 컬렉션 프로세스에 대해 알아본다. 가비지 컬렉터의 종류에 대해 알아본다 read more