그동안 진행해왔던 사이드프로젝트에서 사용해왔던 기술을 정리하는 차원에서 기본기를 다시 다지는 토이프로젝트를 진행하였다.향후 실제 프로젝트를 진행할 때 참고할 수 있는 기술노트 성격으로도 활용하고자 한다.이번 포스트에서는 다양한 애플리케이션에 적용 가능한 공통 응답, 에
토이프로젝트인 점을 고려하여 초기 세팅 기간에는 메모리 DB를 사용하고 Mysql Employee 샘플 데이터 일부를 사용하기로 하였다.우선 h2 db를 연결하기 위해 property 설정을 해준다.db 데이터 초기화와 관련된 초기 세팅 경로는 아래와 같이 해준다.만약
예전에 Mybatis를 사용했을 때는 XML기반으로 작성했던 기억이었다. 공식 문서를 보니 Mybatis 3부터는 애노테이션 기반의 코드 작성도 가능하다고 한다. 애노테이션으로는 XML이 제공하는 모든 기능을 활용할 수는 없다고 한다. 하지만 요즘은 애노테이션 코드 작
Spring Validation을 이용한 입력값과 에러처리에 대한 내용이다.우선 dto 클래스에 기본 validation annotation을 붙여준다.이 때 주의할 점은 @NotEmpty만을 사용하면 유효성 검증이 작동하지 않는다는 점이다.Kotlin 특성 상 Pri
Spring에 mybatis를 xml 기반으로 적용하는 내용이다.mybatis api문서에서는 기본 프로젝트 구조를 아래와 같이 소개한다.그러나 기본 intellij + gradle 환경에서는 위와 같이 xml파일을 java 파일과 같이 위치시키면 안 된다.(jar 파
프로젝트에서 Spring Security와 같은 프레임워크를 사용하지 않고 인증 프로세스를 구현하였다. 회원가입은 회원정보를 이용해 회원을 가입시키고 이에 대한 인증토큰을 발급하는 프로세스로 구성하였다. 회원가입 회원가입 시 비밀번호는 BcryptPasswordEncoder를 사용해 해싱한다. 사용자가 입력한 문자열은 다음과 같은 형태로 해싱된다.$2...
외부 API 사용 시 장애대응을 위한 재시도 기능을 구현하였다.Resilience4j 예제 깃헙gradle에 의존성 설정을 해준다.resilience4j 관련 설정을 해준다.재시도 적용의 경우 AOP가 적용된 애노테이션을 이용한다.fallback 메소드의 파라미터는 e
서킷브레이커에 대해 알아보고 프로젝트에 적용해 보았다.https://resilience4j.readme.io/docs/circuitbreaker서킷브레이커 3개 상태CLOSED : 정상상태OPEN : 장애 발생 상태, 해당 기능을 중단시킨다HALF_OPEN :
기존 프로젝트를 여러 모듈로 나눠보기로 하였다. 복잡한 프로젝트는 아니므로 모듈은 크게 presentation, domain, external로 구분하였다.
프로젝트에 CaffeineCache를 적용해보았다.캐시 설정을 한 곳에서 관리하기 위해 CacheType을 enum으로 선언하였다.각 설정에 대한 의미는 아래와 같다initalCapacity : 캐시 초기 크기, 캐시된 데이터가 증가하면 캐시 크기를 증가시키는 조정이