
이 글은 2026년 04월 13일 작성된 글입니다.
오늘은 Rq 파라미터 처리 개선, 예외 처리, 테스트(assertThat), 그리고
레이어드 아키텍처 구조를 정리했다.
문자열을 매번 직접 파싱하는 대신, 생성자에서 한 번만 파싱하여\
HashMap에 저장하도록 개선했다.
@Test
@DisplayName("\"등록?이름=홍길동&고향=남원&성별=남성\"")
void t7() {
Rq rq = new Rq("등록?이름=홍길동&고향=남원&성별=남성");
String paramValue = rq.getParam("성별", "");
assertEquals("남성", paramValue);
}
파라미터가 없거나 값이 비어있는 경우 기본값을 반환하도록 처리했다.
@Test
@DisplayName("\"등록?성별=\"")
void t8() {
Rq rq = new Rq("등록?성별=");
String paramValue = rq.getParam("성별", "모름");
assertEquals("모름", paramValue);
}
@Test
@DisplayName("\"등록?성별\"")
void t9() {
Rq rq = new Rq("등록?성별");
String paramValue = rq.getParam("성별", "모름");
assertEquals("모름", paramValue);
}
@Test
@DisplayName("\"등록\"")
void t10() {
Rq rq = new Rq("등록");
String paramValue = rq.getParam("성별", "모름");
assertEquals("모름", paramValue);
}
기존 assertEquals 대신 assertThat을 도입했다.
assertThat(value).isEqualTo(2);
문자열 파라미터를 정수로 변환하는 기능을 추가했다.
@Test
@DisplayName("\"목록?page=2\"")
void t11() {
Rq rq = new Rq("목록?page=2");
int value = rq.getParamAsInt("page", 1);
assertThat(value).isEqualTo(2);
}
@Test
@DisplayName("\"목록?page=2번\"")
void t12() {
Rq rq = new Rq("목록?page=2번");
int value = rq.getParamAsInt("page", 1);
assertThat(value).isEqualTo(1);
}
역할별로 계층을 나누어 구조를 분리하는 방식이다.
역할 계층
요청 처리 Controller
비즈니스 로직 Service
데이터 처리 Repository
기능을 역할별로 분리했다.
공통으로 사용하는 객체를 static으로 관리한다.
public class AppContext {
public static WiseSayingService wiseSayingService;
}
클래스 로딩 시 한 번 실행되는 초기화 블록이다.
static {
// 초기화 코드
}