Spring
[JUnit] Test 환경과 Dev 환경 분리(profile 활용한 DB 환경 분리, JUnit5)
[JUnit] Test 환경과 Dev 환경 분리(profile 활용한 DB 환경 분리, JUnit5)
2022.01.28직전 글에서 단위, 통합테스트 한꺼번에 진행을 위한 구성에 대해서 다루었습니다. 글 작성하고 더 알아보니 잘못된 내용들이 조금 있었더라구요. 이번 글에서는 저번 글에서의 잘못된 내용을 수정하면서 Test 환경과 Dev 환경 분리에 대해서 한 번 정리해보려 합니다. 📌 테스트, 개발 환경 분리를 위한 DB 구성 dependencies { //... runtimeOnly 'mysql:mysql-connector-java' runtimeOnly 'com.h2database:h2' //... } 저는 테스트 환경과 개발 환경 분리를 위한 구성을 해보고자 각각의 환경에서 사용되는 DB를 다르게 설정하였습니다. 저번 글에서는 테스트, 개발 환경 모두 embedded DB(h2)를 사용하다 보니 혼용되어 사용되거나 ..
[JUnit] 단위, 통합 테스트 한꺼번에 진행하기 (SpringBootTest, WebMvcTest)
[JUnit] 단위, 통합 테스트 한꺼번에 진행하기 (SpringBootTest, WebMvcTest)
2022.01.25JPA 관련 테스트 어플리케이션을 개발하다가 JUnit을 사용하여 간단한 테스트 코드를 작성하게 되었습니다. 매번 어플리케이션 실행 후 Postman으로 api 확인하는 것도 귀찮더라구요. 개발 진행 후에 실제로 api가 잘 작동하는지 수시로, 빠르게 확인해보고자 JUnit을 도입하게 되었습니다. 여기서는 간단한 예시를 가지고 Controller 단의 단위테스트를 위한 구성과 Service에서 실제 DB까지 잘 적용이 되는지 확인해보고자 Service 단에서는 통합테스트로 구성하면서 겪은 내용들을 기록하고자 합니다. 📌 1. 기본적인 구성 dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' impleme..
[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 라이브러리를 사용하여 테스트용도로 개발을 진행..
MyBatis insert 구문 사용시 mapping 주의 사항
MyBatis insert 구문 사용시 mapping 주의 사항
2021.09.07📌 MyBatis 사용함에 있어서 살짝의 아쉬움... (그래도 좋다!) MyBatis를 사용하면서 SQL 구문과 객체 관점을 매핑해준다는 점에서 많은 장점이 있습니다. 지연 로딩 등의 여러 유용한 기능들도 제공해주기도 하고 JPA와 같이 사용하면서 성능 조절을 할 수 있다는 점도 장점이라고 할 수 있겠네요. 하지만 제가 사용하면서 느낀점은 개발할 때 Entity Class와 Mapper xml 설정 내용 둘다 유심히 잘 봐야한다는 점에서 번거로움이 있었습니다. 특히 xml 설정 내용은 철자 하나하나 정확하게 작성해야 하고 java 코드가 아니라 쌩 SQL 구문을 이용해야 한다는 점에서 살짝 불편함을 느꼈습니다. 그 중 제가 자주 에러를 마주했던 부분에 대해 기록하고자 합니다. 📌 기본적인 INSERT 쿼..