
이 글은 2026년 04월 15일 작성된 글입니다.
오늘은 Lombok 도입, 목록 검색 기능 확장, 페이징 처리,
그리고 파일 및 JSON 관련 기능 추가 내용을 정리했다.
반복적으로 작성하던 getter, setter, 생성자 같은 코드를 줄이기 위해 Lombok을 도입했다.
compileOnly("org.projectlombok:lombok:1.18.38")
annotationProcessor("org.projectlombok:lombok:1.18.38")
testCompileOnly("org.projectlombok:lombok:1.18.38")
testAnnotationProcessor("org.projectlombok:lombok:1.18.38")
Lombok을 적용하면 클래스가 훨씬 간결해지고,
핵심 필드와 역할에 더 집중해서 코드를 볼 수 있다.
목록 조회에서 조건에 따라 내용을 검색하거나 작성자를 검색할 수 있도록 기능이 확장됐다.
목록?keywordType=content&keyword=과거
목록?keywordType=author&keyword=작자
목록?keyword=이순신
처음에는 내용 기준 검색을 만들고,
이후 작성자 기준 검색과 기본 검색까지 차례대로 확장했다.
keywordType=content는 명언 내용 기준 검색keywordType=author는 작성자 기준 검색keywordType이 없으면 기본 검색으로 확장 가능목록이 많아질수록 한 번에 전부 출력하는 방식은 불편하기 때문에
페이지 단위로 나누어 보여주는 기능을 추가했다.
목록
목록?page=2
목록?keyword=명언&page=2
기본적으로는 1페이지가 보여지고,
가장 최근 데이터 5개가 먼저 출력되도록 구현했다.
검색 기능만 따로, 페이징 기능만 따로 있는 것이 아니라
검색 결과 안에서도 페이지를 나누어 볼 수 있도록 처리했다.
목록?keyword=명언&page=2
이 기능은 실제 서비스에서도 자주 쓰이는 방식이다.
데이터가 많아질수록 필요한 결과만 나누어 보는 것이 훨씬 효율적이다.
페이지 번호와 페이지 크기를 하나의 객체로 관리하기 위해 Pageable을 도입했다.
public class Pageable {
private int pageNo;
private int pageSize;
}
이전에는 page와 size를 각각 따로 다뤘다면,
이제는 Pageable 객체 하나로 묶어서 전달할 수 있다.
pageNo: 현재 페이지 번호pageSize: 페이지당 출력 개수이렇게 객체로 분리하면 메서드 파라미터가 깔끔해지고,
확장할 때도 훨씬 유리하다.
파일 생성, 파일 존재 여부 확인, 파일 삭제 기능을 구현했다.
File file = new File("test.txt");
file.createNewFile();
file.exists();
file.delete();
파일 기능은 이후 데이터를 파일에 저장하거나 불러오는 기능의 기초가 된다.
단순해 보이지만 저장소를 파일 기반으로 확장하려면 꼭 필요한 과정이다.
파일 관련 기능이 늘어나면서 테스트도 함께 강화했다.
특히 테스트가 끝난 뒤 temp 폴더가 남지 않도록 정리하는 처리까지 포함했다.
@AfterEach
void tearDown() {
// temp 폴더 정리
}
테스트는 성공하는 것도 중요하지만,
테스트 실행 뒤 환경이 깨끗하게 유지되는 것도 중요하다.
JSON 문자열과 Map 객체를 서로 변환할 수 있는 기능을 구현했다.
Map<String, Object> map = new HashMap<>();
String json = jsonUtil.toJson(map);
Map<String, Object> resultMap = jsonUtil.toMap(json);
이 기능은 파일 저장이나 데이터 직렬화 과정에서 자주 사용된다.
객체를 바로 저장하기 어렵기 때문에 중간 형태로 JSON을 쓰는 경우가 많다.
파일 기반 저장소 테스트를 시작했고,
저장 동작이 정상적으로 수행되는지 테스트 케이스를 추가했다.
파일 저장소는 메모리 저장소와 달리 실제 파일 입출력이 포함되기 때문에
더 꼼꼼한 검증이 필요하다.
@Test
void save() {
// 저장 테스트
}