[문제1] API를 강의 내용처럼 Controller - Service - Repository로 분리해보세요!

5주차 강의에서 살짝 정리한 SRP에 대한 내용으로 코드를 작성하도록 생각했다.

메서드나 클래스는 하나의 기능만이 있어야한다. 라고 생각을했었다.

그렇다면 Controller - Service - Repository는 어떤 역할을 가지고있을까??라는 생각이 들었다.

문제를 풀기전 Controller - Service - Repository역할은??

그렇다면 해당 내용을 가지고 코드를 분리해보는 작업을 진행하겠습니다.

Controller


@RestController
@RequiredArgsConstructor
@Slf4j
@RequestMapping("/api/v1")
public class FruitShopController {

    private final FruitShopService fruitShopService;

    /**
     * 과일을 입고(생성) 하는 컨트롤러입니다.
     * @param request 입력받은 과일 정보의 값
     */
    @PostMapping("/fruit")
    public void stockInFruit(@RequestBody FruitStockRequestDto request){
        fruitShopService.warehousingFruit(request);
    }

    /**
     * 과일이 판매를 위한 컨트롤러 입니다.
     * @param request 과일 판매를 위한 id값
     */
    @PutMapping("/fruit")
    public void fruitSaleProgress(@RequestBody FruitSaleRequestDto request){
        fruitShopService.fruitSale(request);
    }

    /**
     * 과일에 대한 판매 및 미 판매에 대한 조회 결과를 나타냅니다.
     * @return
     */
    @GetMapping("/fruit/stat")
    public List<CalculatorSaleResponseDto> notSaleAndSaleSumAmount(@RequestParam("name") String name){
       return fruitShopService.calculatorSale(name);
    }

    /**
     * 과일에 대한 전체 조회 결과를 나타냅니다.
     * @return
     */
    @GetMapping("/fruits")
    public List<FruitListResponseDto> fruitList(){
        return fruitShopService.findAll();
    }
}

Service