Spring Boot를 처음 배우기 시작했지만 GitHub 저장소가 어떻게 생겼는지, 어디서 무엇을 찾아야 할지 막막한가요? 이 가이드 하나로 Spring Boot 저장소에서 필요한 정보를 찾아 이해하고 활용할 수 있게 됩니다.
📌 이 가이드가 필요한 당신
- Spring Boot를 처음 배우는 중이다
- GitHub 저장소가 어떻게 생겼는지 모른다
- 어디서 어떤 정보를 찾아야 할지 모른다
- 저장소의 코드가 무엇을 의미하는지 모른다
- 배운 걸 자신의 프로젝트에 적용하고 싶다
이 가이드를 읽으면: "Spring Boot 저장소에서 필요한 정보를 찾아 이해하고 활용할 수 있다"
🎯 5단계로 배우는 Spring Boot GitHub 저장소
Step 1: "이게 뭐지?" - 저장소 방문하기 (5분)
저장소 주소: https://github.com/spring-projects/spring-boot
저장소에 처음 접속하면 아래와 같은 화면이 보입니다.
┌─────────────────────────────────────────┐
│ Code (여기에 있음) | Issues | Pull requests│
├─────────────────────────────────────────┤
│ main ▼ [검색창] │
├─────────────────────────────────────────┤
│ 📁 spring-boot-project/ (폴더) │
│ 📁 spring-boot-tests/ (폴더) │
│ 📁 docs/ (폴더) │
│ 📄 README.md (파일) │
│ 📄 pom.xml (파일) │
└─────────────────────────────────────────┘
복잡해 보이지만 걱정하지 마세요. 여기서 볼 핵심 폴더는 3개뿐입니다!
Step 2: "폴더들의 정체" - 구조 이해하기 (10분)
1️⃣ spring-boot-autoconfigure (⭐ 초보자 추천!)
목적: "Spring Boot가 뭘 자동으로 설정하는가" 배우는 곳
spring-boot-autoconfigure/
├─ src/main/java/...
│ ├─ jdbc/
│ │ └─ JdbcAutoConfiguration.java (DB 자동 설정)
│ ├─ data/jpa/
│ │ └─ JpaAutoConfiguration.java (JPA 자동 설정)
│ ├─ web/
│ │ └─ WebMvcAutoConfiguration.java (웹 자동 설정)
│ └─ security/
│ └─ SecurityAutoConfiguration.java (보안 자동 설정)
│
└─ src/test/java/...
└─ (위와 같은 구조인데 Tests.java로 끝남)
- 언제 들어가나? "JPA 자동 설정이 뭔지?" 궁금할 때
- 파일 이름 패턴: 기술이름 + AutoConfiguration / 기술이름 + AutoConfigurationTests
2️⃣ spring-boot-starters
목적: "각 스타터에 뭐가 들어있는가" 알 수 있는 곳
spring-boot-starters/
├─ spring-boot-starter/ (기본)
├─ spring-boot-starter-web/ (웹 개발)
├─ spring-boot-starter-data-jpa/ (데이터베이스)
├─ spring-boot-starter-security/ (보안)
└─ ... (더 많은 스타터들)
각 폴더 안에는:
├─ pom.xml (그 스타터의 의존성 정의)
└─ (그것뿐!)
- 언제 들어가나? "spring-boot-starter-web에 뭐가 들어있나?" 궁금할 때
3️⃣ spring-boot
목적: "Spring Boot가 어떻게 시작되는가" 배우는 곳
spring-boot/
├─ src/main/java/
│ └─ org/springframework/boot/...
│ ├─ SpringApplication.java (시작 클래스)
│ ├─ ApplicationContext.java (Bean 관리)
│ └─ ... (핵심 클래스들)
│
└─ src/test/java/
└─ ... (테스트 코드들)
- 언제 들어가나? "Spring Boot가 어떻게 작동하나?" 깊이 있게 알고 싶을 때 (초보자는 나중에 봐도 됩니다)
기타 폴더들
- 📁 spring-boot-tests/: 통합 테스트 (지금은 Skip 가능)
- 📁 docs/: 공식 문서 (초보자에게 다소 어려울 수 있음)
Step 3: "어떻게 찾지?" - 파일 찾는 법 (5분)
방법 1: GitHub 검색 (가장 쉬움!)
- 저장소 페이지에서 / 키 누르기 또는 "Go to file" 버튼 클릭
- 찾는 파일 이름 입력 (예: JdbcAutoConfiguration)
- 엔터 누르기
- 파일 클릭해서 열기
방법 2: 폴더 따라가기
예: "JPA 자동 설정을 찾고 싶다"
- spring-boot-project 클릭
- spring-boot-autoconfigure 클릭
- src → main → java 클릭
- org/springframework/boot/autoconfigure 따라가기
- data → jpa 클릭
- JpaAutoConfiguration.java 클릭
💡 팁: 폴더가 많으면 "Go to file" (방법 1)이 훨씬 빠릅니다!
Step 4: "파일을 열었는데 뭐지?" - 파일 읽는 법 (15분)
📄 자동 설정 파일 (AutoConfiguration.java) 읽는 법
파일 이름: JdbcAutoConfiguration.java
// 📌 최상단: 파일 설명 (중요!)
/**
* Auto-configuration for JDBC access to a database.
*
* → "이 파일은 JDBC로 데이터베이스에 접근하는 걸 자동 설정한다"
*/
// 📌 클래스 선언 (3가지 찾아보기)
@AutoConfiguration(after = DataSourceAutoConfiguration.class)
// → 1. "순서" : 데이터소스 설정 다음에 실행한다는 뜻
@ConditionalOnClass(JdbcTemplate.class)
// → 2. "조건" : JdbcTemplate이라는 클래스가 있을 때만 실행
public class JdbcAutoConfiguration {
// 📌 Bean 생성 메서드 (가장 중요!)
@Bean
@ConditionalOnMissingBean(JdbcTemplate.class)
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
// → 3. "생성" : JdbcTemplate이라는 Bean을 만든다는 뜻
// (단, 사용자가 이미 만들었으면 만들지 않음)
}
읽을 때 꼭 답해야 할 3가지:
- 이 설정은 언제 실행되나? → @Conditional* 라인 읽기 → "JdbcTemplate 클래스가 있으면 실행"
- 뭘 만드는가? → @Bean 메서드 찾기 → "JdbcTemplate이라는 Bean을 만든다"
- 사용자가 오버라이드할 수 있나? → @ConditionalOnMissingBean 있는지 확인 → "사용자가 이미 만들었으면 만들지 않는다" (YES)
📝 테스트 파일 (*Tests.java) 읽는 법
테스트 파일을 꼭 읽어야 하는 이유가 있습니다.
- 코드만 읽으면 → "이게 뭐 하는 건지" 이해 못함
- 테스트도 읽으면 → "이렇게 작동한다는 증거"를 본다
즉, 테스트 파일은 "사용 설명서" + "증거"입니다.
// 파일 이름: JdbcAutoConfigurationTests.java
@SpringBootTest
// → "진짜로 Spring Boot를 실행해서 테스트한다"는 뜻
class JdbcAutoConfigurationTests {
// 📌 테스트 1: 정상 케이스
@Test
void testJdbcTemplateBacksOff() {
// "JdbcTemplate이 자동으로 생성된다"는 것을 증명
}
// 📌 테스트 2: 사용자 설정 케이스
@Test
void testJdbcTemplateWhenUserProvided() {
// "사용자가 직접 만들면 그것을 쓴다"는 것을 증명
}
}
테스트를 읽을 때:
- 메서드 이름 읽기 (가장 중요!): testJdbcTemplateBacksOff → "JdbcTemplate이 자동으로 생성된다"
- @Test가 뭔가? → "이것이 테스트한다"는 뜻 (코드의 증명)
- 메서드 안의 코드는 이해 안 해도 된다 → 이름만 읽어도 충분
📦 pom.xml (의존성) 읽는 법
파일 위치: spring-boot-starters/spring-boot-starter-web/pom.xml
<project>
<dependencies>
<!-- 1️⃣ 기본 스타터 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<!-- → "이 스타터도 기본으로 포함" -->
</dependency>
<!-- 2️⃣ 웹 개발에 필요한 라이브러리 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<!-- → "Spring의 웹 부분" -->
</dependency>
<!-- 3️⃣ 웹 서버 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!-- → "톰캣 서버" -->
</dependency>
<!-- 4️⃣ 선택적 라이브러리 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<optional>true</optional>
<!-- → "있어도 되고 없어도 되는 라이브러리" -->
</dependency>
</dependencies>
</project>
읽을 때 물어봐야 할 것:
- 이 스타터에 몇 개의 라이브러리가 들어있나? → <dependency> 태그 세기
- 필수 라이브러리는 뭔가? → <optional>true</optional>가 없는 것들
- 선택적 라이브러리는 뭔가? → <optional>true</optional>가 있는 것들
Step 5: "직접 해보기!" - 실습하기 (30분)
🎯 실습 1: 웹 개발 설정 이해하기
목표: "Spring Boot가 웹 개발을 위해 뭘 자동 설정하는가" 이해
- GitHub 저장소 열기
- spring-boot-autoconfigure 폴더 열기
- WebMvcAutoConfiguration.java 찾기 (Go to file 사용!)
- 파일 열고 읽기: @AutoConfiguration(after = ?) 찾기 / @ConditionalOnClass(?) 찾기 / @Bean 메서드 몇 개 있나 세기
- WebMvcAutoConfigurationTests.java 찾기
- 테스트 메서드 이름들만 읽어보기
✅ 배우는 것: "Spring Boot가 웹을 위해 어떻게 자동 설정하는가"
🎯 실습 2: 스타터 구성 분석하기
목표: "각 스타터에 뭐가 들어있는가" 이해
- spring-boot-starters 폴더 열기
- spring-boot-starter-web 폴더 열기
- pom.xml 파일 열기
- <dependency>를 세어보기 ("아, 웹 스타터에 10개의 라이브러리가 들어있네")
- spring-boot-starter-data-jpa도 비교해보기
- 자신의 프로젝트 pom.xml과 비교해보기
✅ 배우는 것: "스타터가 얼마나 많은 라이브러리를 제공하는가"
🎯 실습 3: 자신의 프로젝트와 연결하기
목표: "내 프로젝트가 Spring Boot에서 어떻게 자동 설정되는가" 이해
- 자신의 프로젝트 pom.xml 열기
- 사용 중인 스타터 찾기 (예: spring-boot-starter-web)
- GitHub에서 그 스타터의 pom.xml 찾기
- 두 파일 비교하기: GitHub의 스타터에 뭐가 들어있나? / 내 프로젝트에는 추가로 뭐가 있나? / 왜 그 라이브러리들이 필요한가?
- GitHub에서 그 기술의 자동 설정도 찾아보기 (예: WebMvcAutoConfiguration)
✅ 배우는 것: "내 프로젝트가 Spring Boot와 어떻게 연결되는가"
🚨 초보자가 자주 하는 실수 (꼭 피하기!)
❌ 실수 1: "main 브랜치만 본다"
GitHub의 main 브랜치는 "개발 중인 코드"이기 때문에 불안정할 수 있고 자신의 프로젝트 버전과 다를 수 있습니다.
해결방법:
- 자신의 Spring Boot 버전 확인 (pom.xml에서 <spring.boot.version>3.2.1</spring.boot.version>)
- GitHub에서 같은 버전의 브랜치 선택 (Main ▼ 클릭 → "3.2.x" 찾기 → 클릭)
- 그 브랜치에서 파일 찾기
❌ 실수 2: "코드만 읽고 테스트는 안 본다"
JdbcAutoConfiguration.java만 읽으면 "이게 뭐 하는 건지" 정확히 모르고, 실제로 어떻게 사용되는지도 알 수 없습니다.
해결방법:
- AutoConfiguration 파일 읽기: JdbcAutoConfiguration.java
- 테스트 파일도 반드시 읽기: JdbcAutoConfigurationTests.java
- 테스트를 읽으면 "아, 이렇게 작동하는구나"를 알 수 있다
❌ 실수 3: "한 파일을 완벽히 이해하려고 함"
한 파일에서 2~3시간을 쓰면 진도가 안 나가고 지루해져서 포기하게 됩니다.
해결방법:
- "대략 이렇게 된다" 정도만 이해하기
- 못 이해하는 부분은 건너뛰기
- 다음 파일로 넘어가기
반복하다 보면 처음엔 60% 이해, 두 번째는 80% 이해, 세 번째는 완벽히 이해하게 됩니다.
📅 추천 학습 순서 (1주일)
📍 Day 1-2: 저장소 구조 이해하기 (4시간)
- GitHub 저장소 방문하기
- 이 가이드의 Step 1-2 읽기
- 주요 폴더 3개가 뭐 하는 곳인지 이해하기
- 각 폴더의 하위 폴더들 살펴보기
✅ 배우는 것: "저장소가 어떤 구조인가"
📍 Day 3-4: 자동 설정 파일 읽기 (6시간)
- JdbcAutoConfiguration.java 찾아서 읽기 (30분)
- JdbcAutoConfigurationTests.java도 읽기 (30분)
- 물어봐야 할 3가지에 답변하기
- WebMvcAutoConfiguration.java 찾아서 읽기 (30분)
- WebMvcAutoConfigurationTests.java도 읽기 (30분)
- 자신이 관심 있는 기술 1개 추가로 읽기 (3시간)
✅ 배우는 것: "자동 설정이 어떻게 작동하는가"
📍 Day 5-7: 스타터와 자신의 프로젝트 연결 (6시간)
- spring-boot-starters 폴더 열기
- 3개의 다른 스타터 pom.xml 읽기: spring-boot-starter-web / spring-boot-starter-data-jpa / spring-boot-starter-security
- 자신의 프로젝트 pom.xml과 비교
- "아, 내 프로젝트의 의존성이 여기서 정의되는구나" 이해
- 각 의존성에 대해 GitHub에서 자동 설정도 찾아보기
✅ 배우는 것: "스타터의 구성과 자동 설정의 관계"
❓ 자주 묻는 질문 (FAQ)
Q: 코드가 완벽히 이해가 안 돼도 괜찮나요?
A: 네, 완벽히 괜찮습니다! 처음엔 60% 이해하면 성공입니다. 반복해서 읽다 보면 자연스럽게 이해됩니다. 1주일 후 60% 이해, 2주일 후 80% 이해, 1개월 후 완벽히 이해하게 됩니다.
Q: 어디서부터 시작해야 할까요?
A: 자신의 프로젝트에서 사용하는 기술부터 시작하세요!
- "웹 개발을 배우고 있다" → WebMvcAutoConfiguration부터
- "데이터베이스를 배우고 있다" → JpaAutoConfiguration부터
- "보안을 배우고 있다" → SecurityAutoConfiguration부터
Q: main 브랜치와 3.2.x 브랜치 중 뭘 봐야 할까요?
A: 자신의 Spring Boot 버전과 맞는 브랜치를 보세요! Spring Boot 3.2.1을 쓴다면 "3.2.x" 브랜치를 선택하고, 최신 기능을 배우고 싶다면 "main" 브랜치도 가능합니다.
Q: 테스트 코드가 복잡한데 어떻게 읽을까요?
A: 메서드 이름만 읽으면 됩니다! testJdbcTemplateBacksOff()는 "JdbcTemplate이 자동으로 생성된다"는 의미입니다. 테스트 메서드의 이름이 가장 중요하고, 코드 안의 세부 내용은 이해 안 해도 됩니다.
Q: 다른 폴더들은 언제 봐야 할까요?
A: 초보자는 일단 skip해도 됩니다! spring-boot-tests/는 3개월 후, docs/는 필요할 때 보세요. 먼저 할 일은 spring-boot-autoconfigure(자동 설정) → spring-boot-starters(의존성) → spring-boot(핵심) 순서입니다.
💡 최종 조언: 시작하기 전에 기억할 것
- 완벽함을 목표로 하지 마세요. 초보자는 "대략 이렇게 된다" 정도 이해하면 성공입니다.
- 배운 걸 바로 써먹으세요. GitHub 읽기만 해선 안 됩니다. 자신의 프로젝트와 연결해야 진짜 이해됩니다.
- 반복 학습을 믿으세요. 1번 읽고 모르면 정상입니다. 계속 보다 보면 자연스럽게 이해됩니다.
- 테스트 코드를 활용하세요. "이 코드가 뭐 하는 건지 모르겠어" 할 때 테스트 파일을 보면 답이 있습니다.
- 한꺼번에 다 하려고 하지 마세요. 1주일에 3~4개 파일만 읽으면 OK. 꾸준히 하면 1개월 후에 엄청난 성장을 느낄 것입니다.
🎓 이 가이드를 다 읽고 할 일
- Step 1: GitHub 저장소를 실제로 열어보기
- Step 2: 폴더 구조를 확인하기
- Step 3: 파일 검색 기능으로 1개 파일 찾기
- Step 4: 찾은 파일을 읽어보기
- Step 5: 테스트 파일도 찾아서 읽어보기
- Step 6: 자신의 프로젝트와 비교해보기
📊 1개월 후의 당신
- ✅ GitHub 저장소에서 파일을 찾을 수 있다
- ✅ AutoConfiguration 파일을 읽을 수 있다
- ✅ 테스트 코드로 작동 방식을 이해한다
- ✅ 자신의 프로젝트를 GitHub와 연결할 수 있다
- ✅ 새로운 기술을 배울 때 GitHub를 활용할 수 있다
- ✅ Spring Boot의 설계 철학을 이해한다
- ✅ "자신도 자동 설정을 만들어볼까?" 생각이 든다
🔗 유용한 링크
- Spring Boot GitHub 저장소: https://github.com/spring-projects/spring-boot
- Spring Boot 공식 문서: https://docs.spring.io/spring-boot/
📝 시작하기 전 체크리스트
- 인터넷이 연결되어 있다
- 브라우저가 열려 있다
- GitHub 계정이 있다 (없어도 괜찮지만, 있으면 좋음)
- 자신의 Spring Boot 프로젝트가 있다
- 자신의 프로젝트의 pom.xml 파일을 찾을 수 있다
- 이 가이드를 차근차근 따라가려고 마음먹었다
모든 게 준비됐다면? 이제 시작할 준비가 된 것입니다! 🚀
🌟 마지막 한 마디
"Spring Boot GitHub 저장소는 단순한 소스코드 모음이 아닙니다. 여기엔 Spring Boot를 만든 개발자들의 설계 철학, 모범 사례, 그리고 10년 이상의 경험이 담겨 있습니다."
이 저장소를 제대로 이해하면, 여러분의 Spring Boot 실력은 극적으로 향상될 것입니다. 처음엔 어렵지만, 차근차근 나아가다 보면 언젠가는 "아, 이래서 이렇게 설계했구나"를 깨달을 날이 올 것입니다.
이제 GitHub 저장소를 열고 첫 번째 파일을 찾아보세요! 처음 30분이 가장 어렵지만, 그 후로는 점점 쉬워질 것입니다.
Happy Learning! 🚀
'말귀 알아듣기.zip' 카테고리의 다른 글
| [JPA] JPQL 문법 완전정복 - 실전 예제 30가지 총정리 (1) | 2026.04.19 |
|---|---|
| Spring Data JPA 쿼리 작성 완벽 가이드 | Query Methods, JPQL, QueryDSL, Native SQL 총정리 (0) | 2026.04.19 |
| Spring Boot 소스코드 분석 방법 총정리 | GitHub 저장소 구조, AutoConfiguration, 학습 로드맵 (0) | 2026.04.19 |
| PRD(제품 요구사항 문서) 작성법과 템플릿 총정리 (0) | 2026.04.03 |
| 2026 생성형 AI 생태계 분석: 모델, 프레임워크, 개발 도구 (0) | 2026.03.26 |