[Java] Enum 에는 equals 대신 == 을 써라
·
JVM/Java
TL;DR; 무적권 .eqauls() 대신 ==을 써라. Pizza.java @Getter @NoArgsConstructor @AllArgsConstructor public class Pizza { // == 을 쓰면 좋은 이유 // getStatus() 랑 PizzaStatus 값(평가값)이 실제로 같다 하더라도 타입은 다르기 때문에 // compile error 가 발생해야한다. // 이를 피하기위해 .equals() 대신 == 을 쓴다. // Q. enum 에 string 값을 삽입할 수 있는가? private PizzaStatus status; private PizzaColor color; public enum PizzaColor { GREEN, RED, BLUE } public enum Pizz..
[Spring] 환경 분리 방법
·
JVM/Spring
환경 분리가 왜 필요한가? 애플리케이션은 로컬, 개발, 운영, 테스트 등 다양한 환경을 지원하고 싶을 수 있다. 각 환경마다 다른 자원, 스팩을 사용하는 일은 생각보다 자주 마주친다. SpringBoot 는 이를 지원하기 위한 매커니즘으로 Profile 을 제공한다. yaml 파일로 환경 분리하기 사전 준비 SpringBoot 앱이 로드되자마자 Yaml 파일을 읽어 로깅하도록 지정했다. 어노테이션은 주석을 참고하자. (1) 하나의 application.yaml 에 때려박기 (2) 환경별 yaml 파일 분리하기 profile 을 환경별로 분리하여 정의하고 `application.yaml` 에서 `spring.profiles.active` 값만 지정해줘야한다. 해당 값 미지정시 어느 프로파일로 실행할지 결정..
build.gradle 명령어
·
JVM
build.gradle 이란? groovy 언어 기반의 패키지 관리 파일 gradle 은 총 3단계로 되어있다. 1. Initialization settings.gradle 설정에 따라 여러 프로젝트 모듈 초기화 2. Configuration Dependency graph 를 생성한다. property 등 속성 값을 미리 지정한다. 3. Execution 사전에 정의된 속성값과 Configuration 에서 생성된 DAG 에 따라 각각의 Task 실행 build.gradle 주요 명령어 테스크 목록 출력 # 실행 가능한 테스크 목록 출력 $ gradle tasks gradle 명령어는 task 단위로 실행된다. 빌드 - 실행 - 삭제 # 빌드 $ gradle build # application 실행파일 ..
[Kafka] Error: 재시작 에러
·
JVM/Error
Kafka Broker 서버 구동 방법 (1) Zookeeper 구동 (2) Broker 구동 문제 상황 아래와 같은 에러가 발생하면서 카프카 브로커 시작 실패 해결 방법 zookeper 와 서버 삭제 References Apache Kafka Apache Kafka: A Distributed Streaming Platform. kafka.apache.org
[Java & Kotlin] Stream
·
JVM/Java
Stream 은 왜 만들어졌나? Java , Kotlin 은 List, Set, Array 등 다양한 Collection 을 제공한다. Collection API 와 Iterate 방식은 표준화 되었지만 각 클래스는 같은 기능을 하는 메소드가 중복 정의되어 있다. List 를 정렬하는 방법만 해도 쉽게 2가지를 떠올릴 수 있다. List.sort Collection.sort 리스트 정렬 public class JavaStreamTest { @DisplayName("Sort list with two way ") @Test void forLoop() { List nums = Arrays.asList(5, 4, 3, 2, 1); nums.sort(new Comparator() { @Override public..
[Java] SpringBoot 없이 Yaml config 로드하기 (feat.SnakeYaml)
·
JVM/Java
개요 SpringBoot 를 사용하지 않는 프로젝트로 환경 설정 값을 yaml 에 지정하고 싶었다. 따라서 순수 Java code 로 `application.yaml` 을 로드할 필요가 있었다. 방법 SnakeYaml + Map 방식 간단한 yaml 은 주로 아래와 같은 코드 스니펫으로 Map을 사용해서 파싱할 수 있다. @Test public void whenLoadYAML_thenLoadCorrectImplicitTypes() { Yaml yaml = new Yaml(); Map document = yaml.load("3.0: 2018-07-22"); assertNotNull(document); assertEquals(1, document.size()); assertTrue(document.conta..