📅 2025-12-17 개발 일지: Spring RESTful 심화 및 Java Stream 활용
핵심 요약: 비동기 댓글 처리를 위한 서비스/컨트롤러 설계 및 Java Stream API를 활용한 효율적인 데이터 처리 로직 학습
🍃 Spring Framework: 댓글 서비스 및 RESTful 설계
1. ReplyService 개발 및 트랜잭션 관리
- 서비스 계층 역할: Ajax 처리를 담당하는 컨트롤러의 요청에 맞춰 비즈니스 로직 수행
- 핵심 설정:
- 트랜잭션 처리: @Transactional 어노테이션을 통한 데이터 무결성 보장
- 의존성 주입: @RequiredArgsConstructor를 활용하여 ReplyMapper 자동 주입
- 주요 어노테이션: @Service, @Transactional, @Log4j2
2. 예외 설계 및 응답 구조 (ReplyException)
- 커스텀 예외: RuntimeException을 상속받아 상세한 에러 메시지 전달 구조 설계
- 효과: 컨트롤러 계층에서 문제 발생 시 클라이언트에게 정확한 원인 파악이 가능한 정보 제공
3. @RestController와 비동기 통신
- 개념: Ajax 호출 시 HTML 페이지가 아닌 JSON/XML 형식의 순수 데이터만 전송하는 방식
- ReplyController 구현:
- ResponseEntity: HTTP 응답 상태 코드와 데이터를 함께 담아 세밀한 제어 가능
- 구조: @RestController, @RequestMapping을 통한 경로 매핑 및 비동기 처리
☕ Java 프로그래밍 로직 및 Stream API
1. 연산 및 수학 함수
- 나눗셈 차이:
- 실수 나눗셈: page / 10.0 (소수점 결과 보존)
- 정수 나눗셈: page / 10 (소수점 이하 절삭)
- Math.ceil(): 소수점이 존재할 경우 무조건 위 정수로 올림 처리
2. Java Stream API: 데이터 파이프라인 활용
- 개념: 리스트나 배열 같은 데이터 묶음을 for문 대신 흐름(Flow) 형태로 처리하는 도구
- 주요 메서드 및 프로세스:
- IntStream.rangeClosed(start, end): 시작값부터 종료값까지 양 끝을 포함한 연속 정수 스트림 생성
- .boxed(): 기본형(int)을 객체형(Integer)으로 변환 (컬렉션 저장을 위한 필수 단계)
- .toList(): 스트림을 통해 가공된 데이터들을 최종적인 불변 리스트 형태로 변환 및 저장
🗂️ 핵심 개념 및 보완 설명
- Wrapper Class: List와 같은 컬렉션은 기본 데이터 타입(int, long 등)을 직접 담을 수 없으므로 반드시 객체화(Integer, Long) 과정 필요
- RESTful 서비스: 자원(Resource)을 이름으로 구분하여 해당 자원의 상태를 주고받는 현대적 웹 설계 원칙
- 비동기 처리 장점: 화면 전체를 새로고침하지 않고 필요한 데이터만 업데이트하여 사용자 경험(UX) 극대화
'⏳ Time Log > 1. One Day (Daily · TIL)' 카테고리의 다른 글
| Day 45 (12/19) - 개발 일지: 프로젝트 최종 고도화 및 SQL 집중 학습 (0) | 2026.02.23 |
|---|---|
| Day 44 (12/18) - 개발 일지: 프로젝트 고도화 및 MySQL 집계 쿼리 (0) | 2026.02.23 |
| Day 42 (12/16) - 개발 일지 및 학습 기록 (0) | 2026.02.23 |
| Day 41 (12/15) - 종일 프로젝트 (0) | 2026.02.23 |
| Day 40 (12/12) – 개발 일지: Spring RESTful 전환 및 검색 로직 최적화 (0) | 2026.02.23 |