백엔드 API 개발 특성상 Controller 단에 기본적으로 매번 반복적인 코드를 짜야할 때가 있다. Get,Post,Put,Patch,Delete Mapping 등이 대표적인 예. 시간을 단축하고자 개발자는 IDE에 Live Template을 등록하므로써 개발시간을 단축시킬 수 있다. 처음에는 어색할 수 있으나 두세번 사용하고 나면 훨씬 편리하다는 것을 알 수 있고, Controller의 통일감을 지켜갈 수 있다.
IntelliJ > Settings > Live Templates 검색

user 그룹이 없다면 + 를 누르고 Template Group 하나 생성

그룹이 있다면 + 누르고 Live Template 생성
3-1. 템플릿을 실행할 축약어를 abbreviation란에 적어준다. (원하면 디스크립션도 적어준다.)

👇 Description을 적어주면 사용시에 옆에 뜨게 된다.

private final $DOMAIN$ApplicationService $DOMAIN2$ApplicationService;
@GetMapping(value = "/list", name = "$TITLE$ 목록 조회")
public BaseResponse<$DOMAIN$ListResponse> list(@Valid @QueryStringArgResolver $DOMAIN$ListRequest request) {
return $DOMAIN2$ApplicationService.$DOMAIN2$List(request);
}
@GetMapping(value = "/view", name = "$TITLE$ 단일 조회")
public BaseResponse<$DOMAIN$ViewResponse> view(@RequestParam @Min(value = 1) int $UNIQUENUMBER$Id) {
return $DOMAIN2$ApplicationService.$DOMAIN2$View($UNIQUENUMBER$Id);
}
@PostMapping(value = "/add", name = "$TITLE$ 추가")
public BaseResponse<$DOMAIN$AddResponse> add(@Valid @RequestBody $DOMAIN$AddRequest request) {
return $DOMAIN2$ApplicationService.$DOMAIN2$Add(request);
}
@PutMapping(value = "/edit", name = "$TITLE$ 수정")
public BaseResponse<SuccessResponse> edit(@Valid @RequestBody $DOMAIN$EditRequest request) {
$DOMAIN2$ApplicationService.$DOMAIN2$Edit(request);
return new SuccessResponse();
}
@DeleteMapping(value = "/delete/{$UNIQUENUMBER$Id}", name = "$TITLE$ 삭제")
public BaseResponse<SuccessResponse> delete(@PathVariable @Min(value = 1) int $UNIQUENUMBER$Id) {
$DOMAIN2$ApplicationService.$DOMAIN2$Delete($UNIQUENUMBER$Id);
return new SuccessResponse();
}
여기서 같은 단어 선택하기 단축키(맥 기준: ^ + G)를 눌러서 아래와같이 선택 후 Controller의 주체인 Domain으로 바꿔주면 된다.

사실 이 기능이 편하긴 하지만 아직 Controller를 만들 때 혼자서 작성하지 못하는 수준이라면 (리턴 타입, 어노테이션, 파라미터 사용 등을 혼자 작성하지 못하는 수준) 추천하지는 않는다. 왜냐하면 너무나 잘 아는데 단순 반복적인 부분을 줄이기 위한 방법이지 Controllere단 코드를 이해하지 못하거나 작성하지 못하는 채로 편하게 코딩하려는 습관을 들이는건 좋지 않다고 생각하기 때문이다.
단지 너무나 많은 Domain단의 Controller에서 반복적인 코드를 한줄한줄 타이핑해야하는 고인물 개발자들에게 추천한다.
물론 나는 아니어서 아직 타이밍 함.