서론스프링에 관한 면접 질문에 대한 답을 정리하고 공부하는 과정에서 Sevlet과 DispatcherServlet, Servlet Container 등의 용어를 발견했지만 이에 대한 개념이 정확히 무엇인지 의문이 생겨 한 번 정리하며 제대로 공부해보기 위해서 글로 정리했다! Servlet이란?웹서버가 동적인 페이지를 제공할 수 있도록 도와주는 자바 프로그램웹서버는 일반적으로 정적인 페이지만을 제공한다.따라서 동적인 페이지를 제공하기 위해서 그 역할을 담당하는 것이 Servlet Servlet의 라이프 사이클최초 호출시 init() 메소드로 생성요청이 들어오면 service() 메소드를 호출하고, 요청의 HTTP method에 따라 doGet(), doPost() 등의 메소드를 호출하여 요청을 처리한다Se..
분류 전체보기
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)를..
Spring을 사용하는 사람은 누구나 @Entity 클래스를 생성해보았을 것이다. @Entity 어노테이션과 다른 어노테이션 등을 조합하여 아주 간단하게 생성할 수 있는데, 엔티티는 바로 데이터베이스와 연결되어 있기때문에 안전하게 생성하는 것이 아주 중요하다. 그래서 안전하게 잘 생성하는 방법을 알아보자! 1. @Setter 사용하지 않기 왜 Setter 사용을 지양해야 하는가? Setter를 허용하면 무분별한 엔티티 수정이 가능한 상태가 되어 객체의 안전성을 보장할 수 없다. 특히 @Setter 어노테이션을 사용하면 모든 필드에 대해 setter 함수가 생성되기 때문에 지양해야 한다. 비즈니스 로직에서 엔티티 값 수정이 필요하다면, 상황에 맞게 의미있는 수정 메소드(ex: update(), change..
어쩌다 마주친 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..