이번 핀테크 프로젝트 Challet 서비스에서 거래내역 검색 기능을 구현하게 되면서 elasticsearch를 적용하게 되었다.EC2 ubuntu 환경에서 Docker를 통해 설치하는 과정부터 적용하는 과정까지 기록한다. elasticsearch, kibana, logstash 설치(EC2 + docker compose) GitHub - deviantony/docker-elk: The Elastic stack (ELK) powered by Docker and Compose.The Elastic stack (ELK) powered by Docker and Compose. - deviantony/docker-elkgithub.com위의 github에서 clone을 받는다.그럼 내부에 .env 파일이 있는데 ..
MVC 패턴을 접한지는 어느덧 반년이 넘었다. MVC 패턴을 처음 접하고 Model, View, Controller를 구현하면서 정말 재미있게 구현했던 기억이 난다. 그러다가 Model, View, Controller에 이어서 Service를 분리하여 구현하는 코드를 접하게 되었다. 하지만 그때의 나는 왜 꼭 Service가 필요하지? Controller에서 모든 코드를 구현하면 안되나? 라고 생각하며 Service의 필요성을 확실하게 느끼지 못하였고, 현재까지도 개발할 때 Service를 만들긴 하였으나, 왜 Service가 필요한지, Controller와 어떻게 분리해야 하는지에 대한 확실한 이해가 없이 개발을 해왔던 것 같다. 그렇기 때문에 이번 기회를 통하여 Controller와 Service의 ..
오늘은 Filter와 Interceptor에 대한 공부를 하였다. 먼저 Listener, Filter, Interceptor의 정의에 대해서 알아보고, 이번 내용의 핵심인 Filter와 Interceptor를 비교하면서 정리하고자 한다. Listener부터 시작하겠다. Listener, Filter, Interceptor Listener란? 프로그래밍에서 Listener란 특정 이벤트가 발생하기를 기다리다가 실행되는 객체 이벤트란 특정한 사건 발생 버튼 클릭 ,키보드 입력, 컨테이너 빌드 완료, 웹 어플리케이션 시작, HTTP 요청 수신 등 서블릿 컨테이너에서 발생하는 이벤트 감지 web.xml 파일에 태그를 이용하여 사용 가능 리스너가 여러 개일 경우 보통 선언된 순서대로 실행되지만 아닌 경우도 있음 ..
개인 프로젝트를 진행하다가 회원가입 기능을 구현하는데 MemberForm을 따로 분리하여 구현하는 것과 폼 없이 엔티티를 직접 등록과 수정 화면에서 사용하는 것의 차이에 대해 궁금해졌고, 알아보기로 했다. 우선 간단하게 정의하자면 아래와 같다. DAO: DB에 접근하는 역할을 하는 객체 DTO: 데이터를 전달하기 위한 객체 VO: 값 자체를 표현하는 객체 1. DAO (Data Access Object): 특징 DB에 접근하기 위한 객체 직접 DB에 접근하여 데이터 삽입, 삭제, 조회 가능(CRUD) DB에 접근하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용 DB와 연결할 Connection까지 설정되어 있는 경우가 많다. Service와 DB를 연결하는 고리 역할을 한다. Repository pa..
에러 내용 1) 발생 gradle 파일을 터미널에서 실행하려고 ./gradlew build를 입력하였더니 위와 같은 에러가 발생하였다. 환경변수 관련 문제였다. 2) 원인 나는 zsh를 쓴다는 것을 망각한 채 구글링을 통해 vi ~/.bash_profile을 수정하고 동작하지 않아서 시간을 꽤나 보냈다… 다른 사람들은 이것부터 미리 체크하여 나처럼 바보같은 행동을 하지 않길 바란다. 3) 해결 여튼 나처럼 zsh를 사용하고 있다면 다음과 같이 진행하면 된다. java —version 을 이용해 자바 버전 체크 cd /Library/Java/JavaVirtualMachines 로 이동하여 본인이 사용하는 버전의 jdk의 /Contents/Home 으로 이동 pwd 를 입력하여 주소를 확인하고 복사 vi ~..
에러 내용 1) 발생 → @NotEmpty 어노테이션이 인식되지 않는다. 2) 원인 Validation in Spring Boot | Baeldung 스프링 공식문서에서 부트2.3 부터는 validation 을 지원하지 않는다. 직접 ingection을 해줘야 한다. [Starting with Boot 2.3, we also need to explicitly add the spring-boot-starter-validation dependency:] 3) 해결 build.gradle 파일 dependency 부분에 아래 코드를 추가하면 사용 가능 implementation 'org.springframework.boot:spring-boot-starter-validation'