Spring Boot 3.5.5와 Spring Batch를 활용한 CSV 파일 처리 및 실시간 날씨 데이터 수집 배치 시스템입니다.

- 📄 CSV 배치 처리: 사용자 데이터를 CSV 파일에서 읽어 데이터베이스에 저장
- 🌦️ 날씨 데이터 수집: OpenWeatherMap API를 통한 전국 주요 도시 날씨 정보 수집
⚠️ 이상 기후 탐지: 전날 대비 20도 이상 온도 변화 감지- 📊 실시간 대시보드: Thymeleaf 기반 웹 UI 제공
- 🗄️ H2 데이터베이스: 개발 및 테스트용 인메모리 데이터베이스
- Java 17
- Spring Boot 3.5.5
- Spring Batch
- Spring Data JPA
- Spring WebFlux
- H2 Database
- Thymeleaf
- Lombok
- Gradle
git clone https://github.com/moonjun1/Spring-Batch.git
cd Spring-Batch.env 파일에 날씨 API 키 설정:
WEATHER_API_KEY=your_openweathermap_api_key./gradlew bootRun- 메인 페이지: http://localhost:8080
- 날씨 대시보드: http://localhost:8080/weather/dashboard
- H2 콘솔: http://localhost:8080/h2-console
- CSV 배치 실행
- 저장된 데이터 조회
- H2 데이터베이스 관리
- 전국 8개 도시 실시간 날씨
- 온도별 도시 순위
- 이상 기후 알림
- 수집 통계
- JDBC URL:
jdbc:h2:mem:testdb - 사용자명:
sa - 비밀번호: (비워두세요)
PERSON: CSV에서 읽은 사용자 정보WEATHER_DATA: 수집된 날씨 데이터
자세한 학습 가이드와 개발 문서는 docs/ 폴더를 참고하세요:
src/main/java/com/springbatch/
├── SpringBatchApplication.java # 메인 애플리케이션
├── config/
│ ├── BatchConfig.java # CSV 배치 설정
│ └── WeatherBatchConfig.java # 날씨 배치 설정
├── controller/
│ ├── BatchController.java # 배치 실행 컨트롤러
│ └── WeatherController.java # 날씨 API 컨트롤러
├── entity/
│ ├── Person.java # 사용자 엔티티
│ └── WeatherData.java # 날씨 데이터 엔티티
├── dto/
│ └── WeatherApiResponse.java # 날씨 API 응답 DTO
├── repository/
│ ├── PersonRepository.java # 사용자 리포지토리
│ └── WeatherDataRepository.java # 날씨 데이터 리포지토리
└── service/
└── WeatherApiService.java # 날씨 API 서비스
- 청크 기반 처리 (3개씩 묶어서 처리)
- 데이터 검증 및 변환
- 트랜잭션 안전성 보장
- 8개 주요 도시 (서울, 부산, 인천, 대구, 대전, 광주, 울산, 수원)
- 실시간 온도, 습도, 기압, 날씨 상태 수집
- 전날 대비 온도 변화량 계산
- 이상 기후 자동 탐지
- 이 저장소를 Fork 합니다
- 새로운 기능 브랜치를 생성합니다 (
git checkout -b feat/new-feature) - 변경사항을 커밋합니다 (
git commit -m 'feat: 새로운 기능 추가') - 브랜치에 푸시합니다 (
git push origin feat/new-feature) - Pull Request를 생성합니다
이 프로젝트는 MIT 라이선스 하에 배포됩니다.
프로젝트에 대한 질문이나 제안사항이 있으시면 이슈를 생성해 주세요.