최근 면접을 보러가며 Java 버전에 대해 물어보는 질문을 많이 들었다.
자바 버전을 찾아보다가 Spring Boot가 이제 2.x 는 2023년 11월 말부터 지원을 종료한다는 것을 알아냈다.

Spring Boot 2.x 가 모두 지원 종료되면 기존에 프로젝트를 진행했던 회사들은 3.x로 모두 버전을 옮겨야 했다.
Spring boot 3.x 는 Java 최소 버전이 17이다.
그래서 면접때마다 Java 몇 버전을 사용해보았는지 물어보았던 것이다.
Spring Rest Docs는 테스트 코드를 통해 API 문서 자동화 도구이다.

위와 같이 API 문서를 아주 깔끔하게 정리할 수 있다.
Swagger와 비교하여 Spring Rest Docs는 프로덕션 코드에 영향이 없어, 프로덕션 코드가 어노테이션이 덕지덕지 붙어 지저분해지는 것을 방지할 수 있다.
| 구분 | Spring Rest Docs | Swagger |
|---|---|---|
| 장점 | 프로덕션 코드에 영향이 없다. 테스트 코드 작성이 의무화가 된다. | 문서상에 API를 테스트 할 수 있다. 적용하기 쉽다. |
| 단점 | 테스트 코드 작성해야 하기에 적용이 어렵다. 문서를 위한 테스트 코드를 관리해야 한다. | 테스크 코드가 필요 없다. 프로덕션 코드에 어노테이션을 추가한다. 프로덕션 코드가 지저분해진다. |
특히, 요즘에 TDD가 유행하며 테스트 코드의 작성이 중요해졌고,
내가 만나 개발자들도 Swagger 때문에 Controller하나에 어마무시한 어노테이션들이 추가되는 것을 싫어했고, Spring Rest Docs를 더 선호하였다.
Swagger 코드 예
@ApiOperation(
value = "자격증 정보 조회"
, notes = "자격증의 ID를 통해 자격증의 정보를 조회한다.")
@ApiImplicitParams(
{
@ApiImplicitParam(
name = "id"
, value = "자격증 아이디"
, required = true
, dataType = "string"
, paramType = "path"
, defaultValue = "None"
)
,
@ApiImplicitParam(
name = "fields"
, value = "응답 필드 종류"
, required = false
, dataType = "string"
, paramType = "query"
, defaultValue = ""
)
})
@GetMapping("/licenses/{id}")
@ResponseBody
public UserDTO getLicense(@PathVariable(name = "id") String id, @RequestParam(name = "fields", required = false) String fields) {
return userService.findUserInfoById(id);
}
그러나 Spring Rest Docs는 2023년 11월 말 부로 지원이 종료된다.

다음 버전 출시가 예정되었더라면 표시가 되었을 텐데,,...
한달 남은 지금 아직 아무 이야기 없는 걸보면 유료버전만 2025년까지 지원하고, 이제는 Depreacated 되는 것 같다.
모놀로식 아키텍쳐야 Swagger를 사용하면 되겠지만, 마이크로 아키텍쳐는 Spring Rest Docs + Swagger로 API 문서를 자동화하던데 이제 다른 도구가 필요해 보인다.
어떤 새로운 도구가 등장하려나...?
2023-12-06 수정
오늘 들어가보니, Rest Docs 지원 일자가 1년 추가 되었다.

다른 rest docs 지원을 알아봐야 했는데, 버전 업이 안됐을 뿐 여전히 spring rest docs를 지원하는 것 같다.
아마 2.0.x 에서 3.0.x까지 5년정도 걸렸으니 앞으로 한 2~3년은 더 쓰지 않을까..? 하고 추측해본다.
참고한 사이트
Spring Rest Docs vs Swqgger UI