Skip to content

Repository files navigation

Spring Batch 프로젝트

📋 프로젝트 개요

Spring Boot 3.5.5와 Spring Batch를 활용한 CSV 파일 처리 및 실시간 날씨 데이터 수집 배치 시스템입니다. 스크린샷 2025-08-27 234348 스크린샷 2025-08-27 225313 스크린샷 2025-08-27 225241 스크린샷 2025-08-27 225236 스크린샷 2025-08-27 225231 스크린샷 2025-08-27 234402 스크린샷 2025-08-27 234352

주요 기능

  • 📄 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

🚀 시작하기

1. 프로젝트 클론

git clone https://github.com/moonjun1/Spring-Batch.git
cd Spring-Batch

2. 환경 설정

.env 파일에 날씨 API 키 설정:

WEATHER_API_KEY=your_openweathermap_api_key

3. 애플리케이션 실행

./gradlew bootRun

4. 웹 브라우저 접속

📊 주요 화면

메인 대시보드

  • CSV 배치 실행
  • 저장된 데이터 조회
  • H2 데이터베이스 관리

날씨 대시보드

  • 전국 8개 도시 실시간 날씨
  • 온도별 도시 순위
  • 이상 기후 알림
  • 수집 통계

🗄️ 데이터베이스

H2 콘솔 접속 정보

  • JDBC URL: jdbc:h2:mem:testdb
  • 사용자명: sa
  • 비밀번호: (비워두세요)

주요 테이블

  • PERSON: CSV에서 읽은 사용자 정보
  • WEATHER_DATA: 수집된 날씨 데이터

🔧 개발 가이드

자세한 학습 가이드와 개발 문서는 docs/ 폴더를 참고하세요:

  1. 현재 프로젝트 구조 분석
  2. 시스템 사용법
  3. Spring Batch 기초

📂 프로젝트 구조

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 서비스

🎯 주요 기능 소개

CSV 배치 처리

  • 청크 기반 처리 (3개씩 묶어서 처리)
  • 데이터 검증 및 변환
  • 트랜잭션 안전성 보장

날씨 데이터 수집

  • 8개 주요 도시 (서울, 부산, 인천, 대구, 대전, 광주, 울산, 수원)
  • 실시간 온도, 습도, 기압, 날씨 상태 수집
  • 전날 대비 온도 변화량 계산
  • 이상 기후 자동 탐지

🤝 기여하기

  1. 이 저장소를 Fork 합니다
  2. 새로운 기능 브랜치를 생성합니다 (git checkout -b feat/new-feature)
  3. 변경사항을 커밋합니다 (git commit -m 'feat: 새로운 기능 추가')
  4. 브랜치에 푸시합니다 (git push origin feat/new-feature)
  5. Pull Request를 생성합니다

📝 라이선스

이 프로젝트는 MIT 라이선스 하에 배포됩니다.

📞 문의

프로젝트에 대한 질문이나 제안사항이 있으시면 이슈를 생성해 주세요.

About

스프링배치 해보기(맛보기 시리즈3) 기상api를 사용해서 가져오고 배치를 합니다

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages