B2024001225 윤지선
Java SpringBoot 2주차 본문
2주차 학습 정리
1. Spring이란?
Spring
: Java 기반의 애플리케이션을 개발하기 위한 프레임워크
Spring은 Java를 이용하여 웹 애플리케이션을 비롯한 다양한 프로그램을 개발할 수 있도록 여러 기능과 구조를 제공한다.
Spring을 사용하면 개발자가 애플리케이션의 모든 기능을 직접 구현하지 않고, Spring에서 제공하는 기능과 구조를 활용하여 프로그램을 만들 수 있다.
예시
웹 애플리케이션에서 사용자의 요청을 처리하려면 여러 작업이 필요하다.
클라이언트의 요청
↓
요청 분석
↓
필요한 객체 생성 및 관리
↓
비즈니스 로직 실행
↓
응답 생성
↓
클라이언트에게 전달
Spring에서는 이러한 과정에서 필요한 여러 기능을 제공한다.
따라서 개발자는 웹 애플리케이션의 모든 부분을 처음부터 직접 구현하기보다는 Spring이 제공하는 기능을 활용하여 서비스에 필요한 부분을 개발하는 데 집중할 수 있다.
2. Spring Boot란?
Spring Boot
: Spring을 이용하여 애플리케이션을 보다 쉽고 빠르게 개발할 수 있도록 지원하는 도구
Spring 자체를 사용하려면 프로젝트를 구성하고 여러 설정을 직접 처리해야 하는 경우가 많다.
Spring Boot는 이러한 설정과 프로젝트 구성을 보다 간편하게 할 수 있도록 도와준다.
즉,
Spring: Java 애플리케이션 개발을 위한 프레임워크
Spring Boot: Spring 애플리케이션을 쉽게 만들고 실행할 수 있도록 도와주는 도구
라고 정리할 수 있다.
Spring Boot를 사용하면 프로젝트를 생성하고 실행하기 위한 기본적인 환경을 빠르게 구성할 수 있다.
3. Spring과 Spring Boot의 관계
Spring과 Spring Boot는 서로 별개의 프레임워크라기보다는 Spring Boot가 Spring을 기반으로 만들어졌다는 관계로 이해하는 것이 좋다.
Spring
↓
Spring을 기반으로 애플리케이션 개발
↓
설정 및 프로젝트 구성 필요
↓
Spring Boot
↓
Spring 애플리케이션을 쉽게 구성하고 실행
Spring Boot가 Spring을 대체하는 것이 아니라 Spring을 보다 편리하게 사용할 수 있도록 지원하는 역할을 한다.
따라서 Spring Boot를 공부한다는 것은 기본적으로 Spring을 기반으로 한 애플리케이션을 개발하는 방법을 공부하는 것이다.
4. Spring Boot의 특징
Spring Boot를 사용하는 가장 큰 이유 중 하나는 복잡한 설정을 줄이고 빠르게 애플리케이션을 개발할 수 있다는 점이다.
주요 특징
- 프로젝트를 쉽게 생성할 수 있다.
- 필요한 의존성을 간편하게 추가할 수 있다.
- 다양한 설정을 자동으로 구성할 수 있다.
- 기본적인 실행 환경을 제공한다.
- 별도의 복잡한 서버 설정 없이 애플리케이션을 실행할 수 있다.
특히 이번 학습에서는 Auto Configuration(자동 구성)이라는 개념을 중요하게 다루었다.
5. Spring Initializr
Spring Initializr
: Spring Boot 프로젝트를 생성할 수 있도록 도와주는 도구
Spring Boot 프로젝트를 처음부터 직접 구성하려면 프로젝트 구조와 의존성 등을 직접 설정해야 한다.
Spring Initializr를 이용하면 필요한 정보를 선택하여 기본적인 Spring Boot 프로젝트를 생성할 수 있다.
프로젝트 생성 과정
일반적으로 다음과 같은 항목을 선택하여 프로젝트를 구성한다.
프로젝트 생성
↓
Project 선택
↓
Language 선택
↓
Spring Boot 버전 선택
↓
프로젝트 정보 입력
↓
필요한 Dependencies 선택
↓
프로젝트 생성
예를 들어 Java와 Gradle을 사용하고 Spring Web 의존성을 추가하여 웹 애플리케이션 프로젝트를 생성할 수 있다.
6. Dependency란?
Dependency
: 프로젝트에서 사용하기 위해 추가하는 외부 기능 또는 라이브러리
프로젝트를 개발하다 보면 필요한 모든 기능을 직접 구현하지 않고 다른 개발자가 만들어 둔 라이브러리나 Spring에서 제공하는 기능을 사용하게 된다.
이때 프로젝트에서 사용할 기능을 의존성(Dependency)으로 추가한다.
예시
웹 애플리케이션을 만들기 위해 Spring Web 기능이 필요하다면 해당 의존성을 프로젝트에 추가한다.
Spring Boot 프로젝트
↓
Spring Web Dependency 추가
↓
웹 애플리케이션 개발에 필요한 기능 사용
Spring Initializr에서는 프로젝트를 생성할 때 필요한 의존성을 선택할 수 있다.
예를 들어,
- Spring Web
- Spring Data JPA
- H2 Database
- Lombok
- Validation
등 프로젝트의 목적에 따라 필요한 의존성을 추가할 수 있다.
7. build.gradle
Gradle을 사용하는 Spring Boot 프로젝트에서는 build.gradle 파일에서 프로젝트에 필요한 의존성과 빌드 설정을 관리한다.
예를 들어 다음과 같이 의존성을 추가할 수 있다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
}
이렇게 의존성을 추가하면 프로젝트에서 Spring Web과 관련된 기능을 사용할 수 있다.
정리
build.gradle
↓
프로젝트에 필요한 Dependency 설정
↓
Gradle이 필요한 라이브러리 다운로드
↓
Spring Boot 프로젝트에서 사용
따라서 build.gradle은 단순히 설정 파일 하나가 아니라 프로젝트가 어떤 기능을 사용하는지 확인할 수 있는 중요한 파일이다.
8. Spring Boot Starter
Spring Boot에서는 필요한 기능을 쉽게 사용할 수 있도록 Starter를 제공한다.
Starter
: 특정 기능을 개발하는 데 필요한 여러 의존성을 묶어서 제공하는 것
예를 들어 웹 애플리케이션을 개발한다면 Spring Web과 관련된 여러 라이브러리가 필요할 수 있다.
이러한 의존성을 하나씩 직접 추가하는 대신 Spring Boot Starter를 이용하면 필요한 구성 요소를 한 번에 추가할 수 있다.
예시
implementation 'org.springframework.boot:spring-boot-starter-web'
spring-boot-starter-web을 추가하면 Spring MVC를 비롯한 웹 애플리케이션 개발에 필요한 여러 기능을 사용할 수 있다.
즉 Starter를 사용하면 기능별로 필요한 의존성을 하나씩 찾아서 추가해야 하는 번거로움을 줄일 수 있다.
9. Auto Configuration
Auto Configuration
: Spring Boot가 프로젝트의 설정과 추가된 의존성을 바탕으로 필요한 설정을 자동으로 구성하는 기능
Spring을 사용할 때는 애플리케이션을 실행하기 위해 여러 설정을 직접 작성해야 하는 경우가 있다.
Spring Boot에서는 프로젝트에 어떤 의존성이 추가되어 있는지 등을 확인하여 필요한 설정을 자동으로 구성한다.
예시
Spring Web 관련 의존성을 추가하면,
Spring Web Dependency 추가
↓
Spring Boot가 관련 설정 확인
↓
필요한 웹 관련 설정 자동 구성
↓
웹 애플리케이션 실행
개발자가 모든 설정을 직접 작성하지 않아도 되기 때문에 프로젝트를 보다 빠르게 구성할 수 있다.
이러한 자동 구성은 Spring Boot를 사용할 때 느낄 수 있는 대표적인 편리함 중 하나이다.
10. Spring Boot 프로젝트의 시작점
Spring Boot 프로젝트를 생성하면 애플리케이션을 실행하기 위한 기본적인 클래스가 생성된다.
일반적으로 다음과 같은 형태로 작성된다.
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
여기서 main() 메서드는 Java 프로그램이 실행되는 시작점이다.
public static void main(String[] args)
Spring Boot에서는 이 메서드에서 SpringApplication.run()을 호출하여 Spring 애플리케이션을 실행한다.
11. @SpringBootApplication
@SpringBootApplication
: Spring Boot 애플리케이션의 시작점이 되는 클래스임을 나타내는 애너테이션
Spring Boot 프로젝트를 실행할 때 메인 클래스에 붙어 있는 것을 확인할 수 있다.
@SpringBootApplication
public class Application {
...
}
이 애너테이션을 통해 Spring Boot 애플리케이션을 구성하는 데 필요한 여러 기능이 활성화된다.
따라서 Spring Boot 프로젝트에서 이 애너테이션이 붙은 클래스를 애플리케이션의 시작점으로 볼 수 있다.
12. SpringApplication.run()
SpringApplication.run()
: Spring Boot 애플리케이션을 실행하는 메서드
일반적인 Spring Boot 프로젝트에서는 다음과 같이 사용한다.
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
실행 과정을 간단하게 정리하면,
main() 실행
↓
SpringApplication.run()
↓
Spring Boot 애플리케이션 실행
↓
Spring 환경 구성
↓
서버 실행
따라서 Spring Boot 프로젝트를 실행할 때는 Java의 main() 메서드에서 SpringApplication.run()을 호출하는 구조를 사용한다.
13. Spring Boot 프로젝트 구조
Spring Initializr를 이용하여 프로젝트를 생성하면 여러 파일과 폴더가 만들어진다.
대표적으로 다음과 같은 구조를 확인할 수 있다.
프로젝트
├── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│
├── build.gradle
└── settings.gradle
각 영역마다 역할이 다르다.
src/main/java
src/main/java
: 실제로 동작하는 Java 코드를 작성하는 공간
Controller, Service, Repository 등의 Java 클래스를 이 영역에 작성하게 된다.
앞으로 Spring Boot 프로젝트가 커지면 이곳에 여러 패키지와 클래스가 추가된다.
예를 들어,
src/main/java
└── com.example.project
├── controller
├── service
├── repository
└── domain
와 같은 형태로 구성할 수 있다.
14. src/main/resources
src/main/resources
: Java 코드가 아닌 설정 파일이나 리소스를 저장하는 공간
Spring Boot 프로젝트에서는 설정 파일 등을 이곳에 저장한다.
대표적으로 다음과 같은 파일을 사용할 수 있다.
application.properties
application.yml
애플리케이션의 설정값이나 데이터베이스 연결 정보 등 프로젝트 실행에 필요한 여러 설정을 관리할 수 있다.
15. src/test
src/test
: 테스트 코드를 작성하는 공간
프로그램이 제대로 동작하는지 확인하기 위한 테스트 코드를 작성한다.
이번 주차에서는 프로젝트 구조를 중심으로 확인하고, 테스트에 대한 자세한 내용은 4주차에서 본격적으로 학습할 예정이다.
src
├── main
│ └── 실제 애플리케이션 코드
│
└── test
└── 테스트 코드
이처럼 실제 실행되는 코드와 테스트 코드를 분리하여 관리한다.
16. application.properties
application.properties
: Spring Boot 애플리케이션의 설정 정보를 작성하는 파일
프로젝트를 실행할 때 필요한 여러 설정을 이 파일에 작성할 수 있다.
예를 들어 서버의 Port를 변경할 수도 있다.
server.port=8081
기본 Port 대신 8081을 사용하도록 설정하면 애플리케이션을 실행했을 때 다음과 같이 접근할 수 있다.
localhost:8081
이처럼 Spring Boot에서는 애플리케이션과 관련된 설정을 별도의 설정 파일에서 관리할 수 있다.
17. Spring Boot 프로젝트 실행
프로젝트를 생성했다면 실제로 애플리케이션을 실행할 수 있다.
가장 기본적인 실행 흐름은 다음과 같다.
Spring Boot 프로젝트 생성
↓
필요한 Dependency 추가
↓
코드 작성
↓
Application 클래스 실행
↓
SpringApplication.run()
↓
Spring Boot 실행
↓
서버 실행
서버가 정상적으로 실행되면 브라우저에서 서버 주소로 접속하여 애플리케이션이 실행되고 있는지 확인할 수 있다.
기본적인 개발 환경에서는 다음과 같은 주소를 사용한다.
http://localhost:8080
앞서 1주차에서 정리했던 IP와 Port 개념이 실제 Spring Boot 프로젝트에서 연결되는 부분이다.
18. Spring Boot가 프로젝트 실행 과정에서 하는 일
Spring Boot 프로젝트를 실행하면 단순히 Java 클래스 하나를 실행하는 것에서 끝나는 것이 아니다.
애플리케이션이 실행되면서 Spring 환경이 구성되고 필요한 기능들이 준비된다.
전체적인 흐름을 간단하게 정리하면 다음과 같다.
Application 실행
↓
main() 실행
↓
SpringApplication.run()
↓
Spring 애플리케이션 시작
↓
설정 및 필요한 구성 처리
↓
애플리케이션 실행
특히 Spring Boot에서는 자동 구성(Auto Configuration)을 통해 필요한 설정을 자동으로 처리하기 때문에 개발자가 직접 작성해야 하는 설정을 줄일 수 있다.
19. 1주차에서 배운 내용과 연결하기
1주차에서는 웹 서비스가 동작하는 기본 구조를 공부했다.
클라이언트
↓ 요청
서버
↓
데이터베이스
↓
서버
↓ 응답
클라이언트
2주차에서는 이 구조에서 서버를 구현하기 위한 Spring Boot 프로젝트를 직접 생성하고 실행해보았다.
클라이언트
↓
Spring Boot 서버
↓
비즈니스 로직
↓
데이터베이스
아직 데이터베이스를 연결하거나 복잡한 API를 구현한 것은 아니지만, 앞으로 Spring Boot를 이용하여 서버를 개발하기 위한 기본 환경을 구성했다는 점에서 의미가 있다.
20. 2주차 핵심 정리
이번 주차에서 배운 내용을 간단하게 정리하면 다음과 같다.
Spring: Java 기반 애플리케이션 개발을 위한 프레임워크
Spring Boot: Spring 애플리케이션을 쉽게 개발하고 실행할 수 있도록 지원
Spring Initializr: Spring Boot 프로젝트를 생성하는 도구
Dependency: 프로젝트에서 사용하는 외부 기능이나 라이브러리
Starter: 특정 기능에 필요한 여러 의존성을 묶어서 제공
Auto Configuration: Spring Boot가 필요한 설정을 자동으로 구성하는 기능
@SpringBootApplication: Spring Boot 애플리케이션의 시작점을 나타내는 애너테이션
SpringApplication.run(): Spring Boot 애플리케이션을 실행하는 메서드
src/main/java: 애플리케이션의 Java 코드를 작성하는 공간
src/main/resources: 설정 파일 및 리소스를 저장하는 공간
src/test: 테스트 코드를 작성하는 공간
application.properties: Spring Boot의 설정 정보를 관리하는 파일
Gradle: 프로젝트의 의존성과 빌드를 관리하는 도구
마무리
2주차에는 본격적으로 Spring Boot 프로젝트를 생성하고 실행하면서 Spring Boot의 기본적인 구조와 동작 방식을 정리하였다.
특히 Spring과 Spring Boot의 관계, Spring Initializr를 이용한 프로젝트 생성, Dependency와 Starter, Auto Configuration의 개념을 중심으로 학습하였다.
1주차에 배웠던 클라이언트 → 서버 → 데이터베이스 구조에서 서버를 실제로 구현하기 위한 환경을 만들어 보면서, 이전에 개념으로만 이해했던 내용이 Spring Boot 프로젝트의 코드와 연결되는 과정도 확인할 수 있었다.
다음 주차에서는 프로젝트의 디렉터리 구조와 함께 Controller, Service, Repository로 구성되는 계층형 아키텍처와 요청 처리 흐름을 중심으로 학습할 예정이다.
'Java SpringBoot' 카테고리의 다른 글
| Java SpringBoot 5주차 (0) | 2026.08.26 |
|---|---|
| Java SpringBoot 4주차 (0) | 2026.07.25 |
| Java SpringBoot 3주차 (0) | 2026.07.25 |
| Java SpringBoot 1주차 (0) | 2026.07.11 |