본 프로젝트 자료는 김영한님의 스프링 DB 2편 - 데이터 접근 활용 기술을 참고 제작됐음을 알립니다.
일단 기본 베이스를 깔고가는 코드들을 설명하고자 한다.
Item - 도메인 생성
이름, 가격, 수량을 속성을 가진 Item 객체 다.
ItemRepository - 인터페이스 생성
메모리 구현체에서 향후 다양한 데이터 접근 기술 구현체로 손쉽게 변경하기 위해 리포지토리에 인터페이스를 도입했다.
ItemSearchCond - 검색 생성
검색 조건을 위해 만든 객체 다.
ItemUpdateDto - 수정 생성
상품을 수정할 때 사용하는 객체 다
MemoryItemRepository - 인터페이스 for 구현 생성
ItemService - 인터페이스 생성
서비스의 구현체를 쉽게 변경하기 위해 인터페이스를 사용했다.
원래는 클래스로 생성한다.
ItemServiceV1 - 구현체 클래스 생성
ItemServiceV1 는 ItemRepository 에 대부분의 기능을 전부 위임한 구현체 다.
HomeController - 컨트롤러 생성
단순 홈을 불러오기 위한 컨트롤러 다.
ItemController - CRUD 컨트롤러 생성
상품을 CRUD하는 컨트롤러 다.
MemoryConfig - Config 생성
ItemServiceV1 , MemoryItemRepository 를 스프링 빈으로 등록하고 생성자를 통해 의존관계를 주입한다.
TestDataInit - 이벤트 생성
애플리케이션 실행할 때 초기 데이터를 생성한다.
ItemServiceApplication - 등록한 이벤트 생성
등록한 초기 데이터를 local 이름의 프로필이 사용될 경우 testDataInit 이라는 스프링 빈을 호출 할 수 있게 만들었다.
application.properties - 프로필 등록
spring.profiles.active=local 이라고 하면 스프링은 local 이라는 프로필을 동작하기 위해 @Profile("local") 가 동작하고, testDataInit 가 스프링 빈으로 등록된다.
이걸 실행하면 아래와 같이 미리 생성한 데이터 정보가 등록된다.
ItemRepositoryTest - 테스트 생성
인터페이스를 대상으로 테스트하면 향후 다른 구현체로 변경되었을 때 해당 구현체가 잘 동작하는지 같은 테스트로 편리하게 검증할 수 있다.