JVM / JRE / JDK JVM (Java Virtual Machine) 자바 프로그램을 운영체제와 독립적으로 실행할 수 있게 해주는 환경 가비지 컬렉션(Garbage Collection)으로 프로그램의 메모리를 자동으로 관리 JRE (Java Runtime Environment) 자바 프로그램을 실행하기 위한 환경 Java Class Library: java.io, java.util, java.thread 처럼 작동에 필수적인 구성요소를 담은 라이브러리 JDK (Java Develop Environment) 자바 프로그램의 개발을 위한 환경 javac: 자바 소스코드(.java)를 자바 바이트코드(.class)로 컴파일 Java 실행 프로세스 Java 프로그램 실행 흐름 자바 소스코드(.java)를..
Java
어쩌다 마주친 String... 타입 elasticsearch와 Spring Boot를 연결하기 위해 ElasticConfig 클래스를 작성하던 중, elasticsearch의 호스트가 여러 개인 multi node 환경에서는 어떻게 연결해야하는 것인지 궁금해졌다. ElasticsearchConfig.java @Configuration public class ElasticsearchConfig extends ElasticsearchConfiguration { @Value("${spring.elasticsearch.username}") private String username; @Value("${spring.elasticsearch.password}") private String password; @Va..
개요 builder 패턴은 간단히 요약하자면 객체 생성시, 클래스의 속성 값이 많은 경우 생성자를 활용하면 코드가 너무 길어져 가독성을 해친다는 단점 setter 함수를 활용하면 어디서 객체 속성 값이 변경되었는지 추적하기 어렵다는 단점 위 두 단점을 해결할 수 있는 장점을 갖는 객체 생성 패턴이다. 이런 유용한 builder 패턴을 Lombok의 @Builder 어노테이션으로 간단하게 사용할 수 있다. 클래스에 붙여서 사용할 수 있고, 생성자에 붙여서도 사용할 수 있다. 예제 클래스 public class User { private String name; private String email; private int age; // 이 속성은 직접 값을 지정하지 않는다. // 즉, 객체 생성시 해당 속성의..