본문 바로가기

Spring

(3)
[Spring] @SpringBootTest vs @DataJpaTest 테스트 코드를 작성하고 새로 작성된 테스트 코드를 돌려볼 때 실행 시간이 너무 오래 걸렸다. 이를 기존에 @SpringBootTest로 작성된 코드를 @DataJpaTest 변경하면서 해결할 수 있었는 데 변경하는 중에 공부한 것들을 정리해 보았다. @SpringBootTest @SpringBootTest가 붙은 테스트코드가 실행되면 @ComponentScan 내의 모든 Bean 객체가 ApplicationContext에 올라간후 실행된다. 실제 서버 실행 환경과 비슷한 환경에서 진행되는 테스트인만큼 통합테스트에 유리하다. @DataJpaTest ApplicationContext에 JPA에 필요한 것들만 등록한다. (Entity, JpaRepository) InMemoryDB(H2 database)를 사..
[Spring] RabbitMQ를 이용한 이벤트 예약 프로젝트를 진행하다가 유저가 특정 이벤트를 등록하고 승인 받은 후 해당 이벤트의 시작 시점이 되면 이벤트의 상태가 변화 되도록 하는 프로세스가 필요했다. 방법은 여러가지가 있지만 난 Message Broker를 이용하기로 했고 그중에서도 RabbitMQ를 이용하기로 했다. RabbitMQ 설치 https://www.rabbitmq.com/download.html Downloading and Installing RabbitMQ — RabbitMQ Downloading and Installing RabbitMQ The latest release of RabbitMQ is 3.12.2. See change log for release notes. See RabbitMQ support timeline to fi..
[Spring] 패키지 구조(계층형, 도메인형) 예전에 개발했던 서비스를 리팩토링 하던 중 프로젝트의 구조를 정리할 필요성을 느꼈다. 백엔드 부분을 혼자 개발하다보니 패키지 구조에 대해 많이 신경쓰지 않아 이런 문제가 발생한 것 같다. 다른 분들은 어떻게 하고 계신지 조사해본 결과 크게 두가지로 패키지 구조가 나눠진 것을 알 수 있었다. 계층형 기존에 서비스를 개발할 때 사용하던 구조이다. 서비스 계층에 따라 패키지를 설계하는 방식이다. 장점 서비스에 대한 이해가 없더라도 전체적인 구조를 파악하기 쉽다. 중복된 코드가 발생할 가능성이 적다. 단점 특정 기능을 수정하려고 하면 모든 계층에 그와 관련된 코드가 있어서 수정하기 어렵다. Github이나 여러 툴들을 사용해 협업시 개발자들 사이에서 merge conflict가 날수도 있다. 도메인형 리팩토링 ..