Spring(29)
-
In-memory 왜써? TestContainer쓰자!
What is TestContainer??Testcontainers is a testing library that provides easy and lightweight APIs for bootstrapping integration tests with real services wrapped in Docker containers. Using Testcontainers, you can write tests talking to the same type of services you use in production without mocks or in-memory services.번역Testcontainers는 실제 서비스를 도커(Docker) 컨테이너로 감싸 부트스트래핑 통합 테스트를 위한 쉽고 가벼운 API를 제..
2024.07.11 -
Bulk Exel Data Insert 2부
엑셀을 사용하여 Bulk 차량 등록하기 기능 구현하기 2부 1부에서는 Excel 데이터를 서버에서 요청 VS Client에서 요청 하는 부분에 대해서 글을 작성하였다. (궁금하신 분들은 여기로 가주세요 💁🏻1부 바로가기) 2부에서는 정말 정말 많은 생각을 했었던 요청한 데이터들 차량번호, 차량코드, 등록날짜, 제조날짜, 업체, 지점들의 데이터를 어떻게 Save() 를 할 것인가...!! 에 대해서 공유해보려고한다. 가장 단순한 Save() 1부에서 언급했던 단건 차량 등록처럼 List carRequestDTO 가 들어와도 반복문을 사용해서 carRepository.save() 를 해주면 간단히 끝난다. 하지만 요청 차량이 500개면?? 실제로 이번에 400개의 차량을 등록해야하는 요청이 들어왔다. 그러면..
2022.06.20 -
Bulk Excel Data Insert 1부
엑셀을 사용하여 Bulk 차량 등록하기 기능 구현하기 차량등록하기 기능 분석 현재 다니고 있는 회사는 모빌리티 회사여서 단건 차량등록하기 기능이 있다. (ADMIN 페이지에서) 최근 운영팀에서 업체별로 등록해야하는 차량들이 증가하고 있기 때문에 여러차량들을 등록 할 수 있는 기능을 구현해달라고 기획자분에게 요청하였다. 이 기능 구현을 내가 맡게 되었는데, 기존 단건 차량 로직을 분석 후 기능을 구현하기로 하였다. 기존 단건 기능 로직 등록 요청할 때 업체 , 지점 을 DB에서 조회하여 없을 때는 InvalidParameterException 을 호출하고 있다. validateDuplicateCar 메서드로 DB에서 중복차량 검사를 하고 있다. (차량번호 Pattern은 @Vaildation 어노테이션을 ..
2022.06.20 -
Java8 Stream 특정 Key 중복제거
Java8 Stream 특정 Key 중복 제거 안녕하세요! 이번에는 제가 실무에서 겪었던 특정 키 중복제거를 위한 방법을 소개해보려고 합니다! 문제상황 엑셀 Bulk 등록을 하는 로직을 구현하는 중이었는데요! FE에서 다음과 같은 데이터를 JSON으로 배열로 보내주고 있었죠. @Getter @Setter @NoArgsConstructor @AllArgsConstructor public class UploadExcelCarsDTO { @NotBlank(message = "잘못된 modelCode 입니다.") private String modelCode; @NotBlank(message = "잘못된 차량번호입니다.") private String number; @Min(0) @Max(9999) private ..
2022.05.30 -
RequiredArgsConstructor VS Qualifier 빈 주입
RequiredArgsConstructor VS Qualifier 빈주입 문제 Lombok의 @RequiredArgsConstructor는 final인 필수 멤버변수에 대해서, 자동으로 생성자를 만들어주는 어노테이션이다. @RequiredArgsConstructor public class Example{ @Qualifier("MyTest") private final Test test; } spring의 @Qualifier를 사용하여, 주입되는 Bean을 지정해주었지만, 다음 에러가 발생...🥲(왜..왜그러는거야..) Parameter 0 of constructor in podo.WantQuailfierAutowired required a single bean, but 2 were found: 원인 먼저 ..
2022.05.15 -
인터페이스 빈 주입을 해야하는 이유
왜 인터페이스 빈 주입을 해야할까? 실무에서 개발을 할 때 인터페이스 구현을 받은 클래스에 빈주입을 하고 있는 와중 사수님이 되도록이면 클래스에 빈주입보다는 인터페이스에 빈 주입을 하는것이 확장성에도 좋다고 말씀하셨다...😳 (찾아봐야겠군...) 그렇다면 뭐가 좋은지 찾아보자 비슷한 내용으로 백기선님의 영상을 한번 살펴보고 Let s get it 인터페이스가 있을 땐 그걸 쓰는 이유 with whiteShip 전체코드 인터페이스 public interface MyService { void doSomething(); } 서비스 @Service public class MyserviceImpl implements MyService { @Override public void doSomething() { Syst..
2022.05.15