Spring
[Spring Boot] H2 Database 설정(메모리방식)
[Spring Boot] H2 Database 설정(메모리방식)
2022.01.10Spring Boot로 개발할 때 간편하게 이용할 수 있는 h2 database에 대한 설정 내용을 기록하고자 합니다. 그 과정에서 에러 발생 및 처리에 대해서도 기록하고자 합니다. 해당 설정 내용은 github repository에서 확인할 수 있습니다. (Github Repo) GitHub - beaniejoy/test-project-repository: 🧪 Study & Test Repository, which manages and tests various frameworks, libraries 🧪 Study & Test Repository, which manages and tests various frameworks, libraries and modules, that consists of dire..
logging을 간편하게 해주는 Slf4j 정리와 사용법
logging을 간편하게 해주는 Slf4j 정리와 사용법
2021.10.01Overview Slf4j 정의 - Facade Pattern -Slf4j Facade Slf4j 사용 결론 📌 1. Overview 프로젝트에 log4j2 적용 및 Slf4j를 줄곧 사용해왔는데 문득 log4j2와 Slf4j 속에 담겨진 개념이라든가 특징에 대해서 찾아본 적이 없었던 것 같습니다. 그래서 해당 내용에 대해 여러 문서들을 찾아보며 정리한 내용을 기록하고자 합니다. (log4j 및 log4j2 특징은 다른 게시글에 정리해보겠습니다.) 이번 게시글은 Slf4j에 대한 내용만 담아보려 합니다. 📌 2. Slf4j 정의 SLF4J 프로젝트 페이지 SLF4J는 Simple Logging Facade for Java 의 줄임말입니다. 어떤 단어나 개념을 접할 때 저는 늘 풀네임 자체에 주목을 해서 ..
[Spring] 이벤트 처리를 위한 스케줄러 작업 조정(ShedLock 활용)
[Spring] 이벤트 처리를 위한 스케줄러 작업 조정(ShedLock 활용)
2021.09.22사용 배경 문제 인식 - 1. outbox 테이블 전체 조회로 인한 문제 - 2. scale-out 상황에서 스케줄러 작업의 중복 실행의 가능성 문제 ShedLock을 위한 프로젝트 설정 ShedLock을 이용한 스케줄링 Lock 설정 - Scale-out 상황에서 스케줄러 중복 실행에 대한 해결 전체 조회 내용을 chunk로 나누어 작업 수행 - 처음에 작은 단위로 조회해보기 - 비동기 방식으로 메일 전송 작업하기 끝나지 않은 고민 - 작업을 꼭 수행해야하는 기능에 대해서는 어떻게 구현할 것인가 📌 1. 사용 배경 프로젝트를 진행하면서 패스워드 변경 요청을 위한 Email 전송 기능이 필요해졌습니다. Email은 spring boot starter mail 라이브러리를 사용하여 테스트용도로 개발을 진행..
[Spring] Interceptor, Resolver 객체 전달을 통한 리팩토링
[Spring] Interceptor, Resolver 객체 전달을 통한 리팩토링
2021.08.02Overview Interceptor와 Resolver 기존 방식 리팩토링 진행 후 코드 정리 📌 1. Overview 최근 프로젝트를 개발하면서 로그인 인증 처리와 세션 연장 처리 부분을 Spring Security 사용하지 않고 구현해보는 과정을 진행하였습니다. Interceptor를 사용하였고 인증된 UserSession 객체를 handler parameter에 전달하기 위해 HandlerMethodArgumentResolver를 사용하였습니다. 문제는 각각의 interceptor와 Resolver 구현체에서 Redis 조회가 이루어져 비용측면에서 비효율적인 부분이 보였습니다. 이를 개선해본 내용들을 블로그에 글로 정리해봤습니다. 📌 2. Interceptor와 Resolver Interceptor..
docker를 이용한 Ngrinder 성능 테스트 환경 세팅
docker를 이용한 Ngrinder 성능 테스트 환경 세팅
2021.07.25Overview Ngrinder dockerfile 구성 Ngrinder Controller에서 테스트 설정하기 결론 📌 1. Overview Spring Boot(Scale-out) Docker MySQL Nginx(Load Balancer) Redis 진행하고 있는 프로젝트의 대략적인 환경입니다. 여기에서 간단한 성능 테스트를 해보고자 Naver에서 Open Source로 제공하고 있는 Ngrinder 성능테스트 툴을 적용해보려고 합니다. Ngrinder와 성능테스트에 대한 세세한 내용은 생략하고 단순히 Ngrinder 적용 방법에 대한 간단한 글을 적어둘까해요. (사실 제가 나중에 보려고 적어두는 글입니다. ㅎㅎ) 📌 2. Ngrinder dockerfile 구성 Ngrinder war 파일을 직접..
[Spring] 인터페이스 특징과 ISP(인터페이스 분리 원칙)에 대한 정리
[Spring] 인터페이스 특징과 ISP(인터페이스 분리 원칙)에 대한 정리
2021.07.21Java 인터페이스의 특징 OOP의 인터페이스 분리 원칙 인터페이스 상속 정리 📌 1. Java 인터페이스 특징 Java 인터페이스는 다형성을 가장 잘 보여주는 존재입니다. public interface RemoteController { void volumeUp(); void volumeDown(); } 리모컨이라는 인터페이스를 가지고 간단한 예시를 들어보겠습니다. @Component public class SRemoteController implements RemoteController { @Override public void volumeUp() { // volume up 로직 System.out.println("S사 리모컨 볼륨을 1단계 높였습니다."); } @Override public void ..