서론스프링에 관한 면접 질문에 대한 답을 정리하고 공부하는 과정에서 Sevlet과 DispatcherServlet, Servlet Container 등의 용어를 발견했지만 이에 대한 개념이 정확히 무엇인지 의문이 생겨 한 번 정리하며 제대로 공부해보기 위해서 글로 정리했다! Servlet이란?웹서버가 동적인 페이지를 제공할 수 있도록 도와주는 자바 프로그램웹서버는 일반적으로 정적인 페이지만을 제공한다.따라서 동적인 페이지를 제공하기 위해서 그 역할을 담당하는 것이 Servlet Servlet의 라이프 사이클최초 호출시 init() 메소드로 생성요청이 들어오면 service() 메소드를 호출하고, 요청의 HTTP method에 따라 doGet(), doPost() 등의 메소드를 호출하여 요청을 처리한다Se..
Spring을 사용하는 사람은 누구나 @Entity 클래스를 생성해보았을 것이다. @Entity 어노테이션과 다른 어노테이션 등을 조합하여 아주 간단하게 생성할 수 있는데, 엔티티는 바로 데이터베이스와 연결되어 있기때문에 안전하게 생성하는 것이 아주 중요하다. 그래서 안전하게 잘 생성하는 방법을 알아보자! 1. @Setter 사용하지 않기 왜 Setter 사용을 지양해야 하는가? Setter를 허용하면 무분별한 엔티티 수정이 가능한 상태가 되어 객체의 안전성을 보장할 수 없다. 특히 @Setter 어노테이션을 사용하면 모든 필드에 대해 setter 함수가 생성되기 때문에 지양해야 한다. 비즈니스 로직에서 엔티티 값 수정이 필요하다면, 상황에 맞게 의미있는 수정 메소드(ex: update(), change..
서버에 어디까지 파일을 제공해야 할까? 소스파일 전체 제공 서버에서 소스파일 빌드해서 .jar 파일 만들기 Dockerfile 파일로 도커 이미지 빌드하기 docker-compose.yml 파일로 도커 컨테이너 실행 → ❓ 서버에 소스파일까지 제공하는 건 너무 투머치 아닐까? .jar 파일과 Dockerfile 파일, docker-compose.yml 파일 제공 로컬에서 소스파일 빌드해서 .jar 파일 만들어서 서버에게 제공 Dockerfile 파일로 도커 이미지 빌드하기 docker-compose.yml 파일로 도커 컨테이너 실행 → ❓ 빌드한 .jar 파일을 서버에 깔끔하게 제공하는 방안은? github release에 업로드 하는 방안도 있긴하다! 빌드된 도커 이미지 파일, docker-compos..
개요 주류 큐레이션 플랫폼 서비스 ‘술자리’ 프로젝트에서 검색 API 서버를 개발하기 위해 Spring Boot + elasticsearch의 기술 스택을 구성하였다. 셋업부터 초기 개발을 진행하는 과정에서 구글링을 진행했는데 elasticsearch의 빠른 버전 변경과 그에 따른 기술 사용 형태의 변경으로 2~3년 전 작성된 블로그의 글이, 거의 최신 버전을 사용하려는 지금 프로젝트에 바로 손쉽게 적용하기 어려웠다. 그래서 직접 이것저것 찾아다 연동과 개발을 진행하면서 혹시라도 추후의 나에게 또는 다른 사람에게 도움이 될 수 있도록 내용을 정리해보았다. 0. 버전 정보 Spring Data Elasticsearch와 elasticsearch 간의 버전 호환성을 잘 체크해야한다! Spring Boot v..