Kotlin과 Spring Boot를 활용한 실전 프로젝트 학습 Repository
이 프로젝트는 Kotlin & SpringBoot 실전 마스터 3단계 로드맵의 첫 번째 단계 프로젝트입니다. 간단한 Hello API와 Todo CRUD 기능을 구현하여 Kotlin과 Spring Boot의 기본기를 익힐 수 있습니다.
- Language: Kotlin
- Framework: Spring Boot 3.x
- Build Tool: Gradle (Kotlin DSL)
- Database: H2 (In-memory)
- Dependencies:
- Spring Web
- Spring Data JPA
- H2 Database
- Kotlin Coroutines
src/main/kotlin/com/example/hellokotlin/
├── HelloKotlinApplication.kt # 메인 애플리케이션
├── controller/ # REST 컨트롤러
│ ├── HelloController.kt # Hello API
│ └── TodoController.kt # Todo CRUD API
├── entity/ # JPA 엔티티
│ └── Todo.kt # Todo 엔티티
├── repository/ # JPA 레포지토리
│ └── TodoRepository.kt # Todo 레포지토리
└── kotlin_learning/ # Kotlin 학습 예제
├── 01_basics.kt # 기본 문법
├── 02_oop.kt # 객체지향 프로그래밍
├── 03_functional.kt # 함수형 프로그래밍
├── 04_advanced.kt # 고급 기능
├── 05_practice_missions.kt # 실습 미션
├── KOTLIN_LEARNING_GUIDE.md # 학습 가이드
└── notebooks/ # 인터랙티브 학습용 노트북
├── 01_basics_notebook.ipynb
├── 02_oop_notebook.ipynb
├── 03_functional_notebook.ipynb
├── 04_advanced_notebook.ipynb
└── 05_practice_missions_notebook.ipynb
- 각
.kt파일에는main()함수가 있어 독립적으로 실행 가능 - IntelliJ IDEA에서 파일 열고 main 함수 왼쪽의 ▶ 버튼 클릭
- SpringBoot Runner로 실행:
./gradlew bootRun --args="basics" # 기본 문법 ./gradlew bootRun --args="oop" # 객체지향 ./gradlew bootRun --args="functional" # 함수형 ./gradlew bootRun --args="advanced" # 고급 기능 ./gradlew bootRun --args="practice" # 실습
- 각 개념을 단계별로 실행하며 학습
- 즉시 결과 확인 가능
- 코드 수정 후 재실행 용이
Jupyter 설치 및 실행:
# Kotlin Kernel 설치
pip install jupyter
conda install -c jetbrains kotlin-jupyter-kernel
# 노트북 실행
jupyter notebook
# 브라우저에서 .ipynb 파일 열기-
기본 문법 (
01_basics.kt/01_basics_notebook.ipynb)- 변수 선언 (val, var) - Java의 final과 비교
- 함수 정의와 호출 - Python의 기본값 매개변수 지원
- 조건문 (if, when) - Java의 switch보다 강력
- 반복문 (for, while) - Python의 range와 유사
- Null Safety - NullPointerException 방지
-
객체지향 프로그래밍 (
02_oop.kt/02_oop_notebook.ipynb)- 클래스와 생성자 - Java보다 간결한 문법
- 데이터 클래스 - Python의 @dataclass와 유사
- 상속과 다형성 - 기본적으로 final, open 키워드로 상속 허용
- 인터페이스 - Java 8+처럼 기본 구현 가능
- Sealed 클래스 - 타입 안전한 상태 표현
- 싱글톤 객체 - 언어 레벨 싱글톤 지원
-
함수형 프로그래밍 (
03_functional.kt/03_functional_notebook.ipynb)- 람다 표현식 - Java 8 람다보다 간결
- 고차 함수 - 함수를 매개변수로, 반환값으로
- 컬렉션 연산 (filter, map, reduce) - Java Stream API와 유사
- 시퀀스와 지연 평가 - 대용량 데이터 효율적 처리
- 함수 합성 - 작은 함수들을 조합
-
고급 기능 (
04_advanced.kt/04_advanced_notebook.ipynb)- 확장 함수 - 기존 클래스에 메서드 추가
- 값 클래스 (Inline Classes) - 런타임 오버헤드 없는 래퍼
- 위임 (Delegation) - by 키워드로 위임 패턴 구현
- 코루틴 - 비동기 프로그래밍
- DSL 구축 - 도메인 특화 언어 만들기
-
실습 미션 (
05_practice_missions.kt/05_practice_missions_notebook.ipynb)- Todo 앱 구현 - 기본 CRUD와 상태 관리
- 계산기 구현 - Sealed 클래스로 타입 안전한 연산
- 가계부 앱 구현 - 데이터 분석과 리포트 생성
자세한 학습 가이드는 KOTLIN_LEARNING_GUIDE.md를 참고하세요.
git clone https://github.com/gd452/hello-kotlin.git
cd hello-kotlin./gradlew bootRun- URL: http://localhost:8080/h2-console
- JDBC URL:
jdbc:h2:mem:testdb - Username:
sa - Password: (비어있음)
- GET
/hello- 간단한 인사 메시지 반환
- Response:
"Hello, SpringBoot + Kotlin!"
-
GET
/todos- 모든 Todo 목록 조회 (최신순 정렬)
-
GET
/todos/{id}- 특정 Todo 조회
-
POST
/todos- 새로운 Todo 생성
- Request Body:
{ "title": "할 일 제목", "description": "할 일 설명", "completed": false }
-
PUT
/todos/{id}- Todo 수정
- Request Body:
{ "title": "수정된 제목", "description": "수정된 설명", "completed": true }
-
DELETE
/todos/{id}- Todo 삭제
curl -X POST http://localhost:8080/todos \
-H "Content-Type: application/json" \
-d '{"title":"Kotlin 공부하기","description":"Spring Boot와 함께"}'curl http://localhost:8080/todos- ✅ Kotlin 기본 문법 학습
- ✅ SpringBoot 기초 (Hello API, CRUD)
- ✅ H2 인메모리 DB 연동
- ✅ 인터랙티브 학습 자료 제공 (Jupyter Notebook)
- 실제 업무 자동화 프로젝트
- 입력값 기반 운행기록 자동 생성
- 규칙 기반 데이터 처리
- CSV/Excel 출력 기능
- 종목/거래 관리
- 투자 지표 분석
- 리포트 생성
- 확장 가능한 아키텍처 설계
각 단계별로 점진적으로 복잡도가 증가하며, 실전에서 사용할 수 있는 기술들을 익힐 수 있습니다.
- Java 개발자: Kotlin의 null safety와 확장 함수에 주목하세요
- Python 개발자: 정적 타입의 장점을 활용하면서도 간결한 문법 즐기기
- C/C++ 개발자: 메모리 관리 없이 안전한 프로그래밍 경험하기
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
이 프로젝트는 학습 목적으로 만들어졌습니다.
Built with ❤️ using Kotlin and Spring Boot