패키지는 최대 5개(constants, mapper, request, response, service)로 나뉩니다.
클래스가 없는 경우, 빈 패키지를 만들지 않아도 됩니다.
DTO 클래스는 Request로 대체합니다.
각 클래스 명은 패키지 명을 접미사로 붙입니다. (ex. TestConstants, TestService)
Selector는 서비스 패키지 내부에 위치하고, 접미사는 Selector로 합니다.
기존 DB값 받기만 했던 DTO가 필요한 경우는 접미사로 Response를 붙이지 않습니다.
Controller와 CustomException, CustomEnum은 패키지에 포함 시키지 않습니다.

API의 공통 Request(jwtkey, langCd)는 BaseObject를 상속 받아 사용합니다. (만약, request로 넘겨줄 파라미터가 없다면 BaseObject를 그대로 사용합니다.)
public class TestRequest extends BaseObject {
private String field1;
private String field2;
}
성공 Response
Controller에서 객체 그대로 반환합니다.
@GetMapping("/test")
public TestObject getObject() {
return testService.getObject();
}
실패 Response
Service 내부에서 Exception을 발생 시킵니다.
public void testService(RequestObject request) {
if(UtilsString.isEmpty(request.getType())) {
throw new BusinessException("common.info.00001", request.getLocale());
}
}
분기 처리를 위한 Exception
public void testService(RequestObject request) {
switch(request.getType()) {
case "A":
throw new BusinessException("common.info.00001", request.getLocale(), 100);
case "B":
throw new BusinessException("common.info.00001", request.getLocale(), 101);
case "C":
throw new BusinessException("common.info.00001", request.getLocale(), 102);
}
}
