1. 빌드 시스템 및 리포지토리 (Maven vs Gradle)
과거 레거시에서 쓰던 Ant 대신, 현재는 Maven이나 Gradle 같은 모던 빌드 시스템을 사용
1) Maven 리포지토리 메커니즘
- 리포지토리(Repository): 빌드에 필요한 Artifact(주로 .jar 라이브러리 파일)들을 저장하는 공간. pom.xml에 필요한 Dependency(의존성)를 선언하여 사용함.
- 로컬 리포지토리 (.m2 폴더): 빌드 시스템이 라이브러리를 찾을 때 가장 먼저 확인하는 개인 PC 내의 로컬 경로.
- 원격 리포지토리 (Maven Central Repository): 로컬(.m2)에 필요한 라이브러리가 없으면, 네트워크를 통해 자동으로 Maven Central 리포지토리에서 다운로드하여 로컬에 저장함.
2) Maven vs Gradle 빌드 시스템 비교
- Maven: pom.xml 설정을 기반으로 작동하며, 정해진 라이브러리 관리 규칙과 빌드 생명주기를 따름
- mvn compile: 소스 코드를 컴파일하는 명령어 (STS 같은 통합개발환경을 쓸 때는 IDE가 자동으로 해주므로 직접 입력할 일이 거의 없음).
- package: 컴파일된 코드를 배포 가능한 .jar 파일로 묶는 단계.
- 순수 스프링 구동: <dependency>로 spring-context 라이브러리 추가
- Gradle: build.gradle를 작성하면, 그루비(Groovy) 가상머신 위에서 실행되는 빌드 시스템
- 빌드 명세서를 자바와 유사한 그루비 언어(또는 Kotlin)로 작성
- 단순 설정을 나열하는 것을 넘어 빌드 시스템 자체를 코딩하여 프로젝트에 맞게 자유롭게 커스텀할 수 있다는 장점이 있음
- 순수 스프링 구동: implementation 'org.springframework:spring-context:6.1.x'
🔍 기타 용어
플러그인(Plugin): 그 자체로 주체성을 가지고 컴파일, 패키징 등 특정 작업을 직접 수행하는 실행 파일 또는 빌드 프로세스를 확장하는 도구(빌드 도구를 직접 장착)
라이브러리(Library): 스스로 실행되지 않고 개발자가 호출해서 사용할 수 있도록 코드 기능만 묶어 놓은 집합. (프레임워크도 넓은 의미에서 라이브러리와 유사하게 코드를 제공받아 사용함)
ℹ️ 순수 스프링을 구동하려면 부트 스타터 대신 spring-context 라이브러리를 직접 주입해야 함.
2. Spring Boot & 프로젝트 구조
1) Spring Boot 특징
- Maven/Gradle 위에서 실행되는 고급 프레임워크 패키지
- Starter 자원 관리 및 버전 제어 (BOM & Parent): spring-boot-starter 시리즈(이름 그대로의 형태를 가진 패키지)를 통해 복잡한 의존성 설정을 알아서 최적의 버전으로 묶어 관리해 줌. (전이적 종속성 자동 관리)
- 실행 방식: 프로젝트를 Run As ▶️ Spring Boot App으로 실행하면 내장 톰캣 등이 구동되며 스프링 부트 애플리케이션이 실행됨.
- 참고: 현재 컴파일러 아키텍처가 순수 Spring Framework 기반으로 잡혀있을 때는 Run As 시 일반 Java Application으로 실행 될 수 있다. (이 경우 spring-boot-maven-plugin 설정이 필요)
ℹ️ 클래스 내에 main 메서드가 없으면 IDE의 실행(Run As) 메뉴에 Java Application이나 Spring Boot App 옵션이 나타나지 않는다.
2) 프로젝트 구조 및 파일 역할 미리보기
- src/main/java: 실제 자바 소스 코드(package 및 클래스 파일)를 생성하고 개발하는 핵심 공간.
- src/test/java: JUnit 같은 테스트 라이브러리를 사용해 단위 테스트 코드를 작성하고 실행하는 공간. (빌드 시스템이 이 폴더를 인식하여 배포 전 자동으로 테스트를 수행함)
- target/(Maven 구조): 기본 자바 프로젝트의 bin 폴더와 같은 역할로, 빌드 및 컴파일된 결과물(.class 파일 등)이 저장되는 곳
- STS4 종속 파일: 프로젝트 루트에 있는 .settings/ 폴더, .classpath, .project 파일 등은 STS4 IDE가 해당 프로젝트를 인식하고 관리하기 위해 내부적으로 사용하는 환경 설정 파일들.
ℹ️ JUnit 단위 테스트 (Toby Spring 기반)
개념: 자바에서 단위 테스트(Unit Test)를 수행할 수 있도록 도와주는 대표적인 테스트 라이브러리.
사용법: @Test 어노테이션이 붙은 메서드는 하나의 독립적인 테스트 항목이 되어 개별적으로 코드가 수행됨.
비즈니스 코드뿐만 아니라, 이 단위 테스트 코드가 꼼꼼하게 작성되어 있는 프로젝트가 건강하고 유지보수하기 좋은 프로젝트임
'Tech Stack > Backend' 카테고리의 다른 글
| 🥾스프링 부트 소개: 설정의 늪에서 생산성의 혁명으로 (0) | 2026.06.19 |
|---|---|
| 🍃간단 Spring Core & 아키텍처의 이해 (0) | 2026.06.19 |
| 🍃어노테이션 기반 수동 빈 등록 (AppConfig) & 스프링 어노테이션(@Autowired) 없이 수동 주입 (0) | 2026.06.18 |
| 🍃스프링 어노테이션(DI/MVC/롬복) 가이드 (참고용) (0) | 2026.06.18 |
| 🍃자동 의존관계 주입 방법과 컴포넌트 스캔 (0) | 2026.06.17 |