이 강좌에서는 스프링 부트를 사용한 백엔드 개발 환경을 설정하고, 이해하기 쉽게 프로젝트를 구성하는 방법에 대해 다룹니다. 본 강좌는 초보자를 대상으로 하며, 단계별로 설명하므로 쉽게 따라 할 수 있습니다.
1. 스프링 부트란?
스프링 부트(SDpring Boot)는 자바 기반의 프레임워크로, 개발자가 빠르고 간편하게 스프링 애플리케이션을 만들 수 있도록 도와주는 도구입니다. 전통적인 스프링 프레임워크의 복잡성을 줄이고, 설정을 간소화하며, 즉시 사용 가능한 다양한 기능을 제공합니다.
1.1 주요 특징
- 자동 구성: 필요한 설정을 자동으로 해줍니다.
- Standalone: 별도의 서버 설치 없이 실행할 수 있습니다.
- 모듈화: 필요한 의존성만 포함하여 개별 모듈로 구성할 수 있습니다.
- 내장 서버 지원: 톰캣, 제티, 언더토우 등의 내장 서버를 지원합니다.
2. 개발환경 설정
스프링 부트를 사용하기 위해서는 개발 환경을 설정해야 합니다. 아래 절차를 따라 개발 환경을 준비해 봅시다.
2.1 필수 조건
- Java Development Kit (JDK) 11 이상 설치
- IDE (예: IntelliJ IDEA, Eclipse) 설치
- Maven 또는 Gradle 설치 (예: Maven은 Dependency Management을 도와줍니다.)
2.2 JDK 설치
JDK를 설치하기 위해서 Oracle 또는 OpenJDK의 웹사이트에서 설치파일을 다운로드하고, 안내에 따라 설치합니다. 설치 후, 명령 프롬프트 또는 터미널에서 아래 명령어를 입력하여 JDK가 제대로 설치되었는지 확인합니다:
java -version
2.3 IDE 설치
IntelliJ IDEA 또는 Eclipse와 같은 IDE를 설치합니다. 여기에서는 IntelliJ IDEA를 사용하는 방법을 설명합니다. 공식 웹사이트에서 ‘Community Edition’을 다운로드하여 설치합니다.
2.4 Maven 설치
Maven은 스프링 부트 프로젝트를 생성하고 의존성을 관리하는 도구입니다. Maven의 공식 웹사이트에서 다운로드 후 설치합니다.
3. 첫 번째 스프링 부트 프로젝트 만들기
이제 개발 환경이 준비되었으므로, 스프링 부트 프로젝트를 생성하고 실행하는 방법을 소개하겠습니다.
3.1 Spring Initializr 사용하기
스프링 부트를 사용하여 프로젝트를 쉽게 설정하기 위해 Spring Initializr를 이용할 수 있습니다. 브라우저에서 Spring Initializr에 접속합니다.
- Project: Maven Project 선택
- Language: Java 선택
- Spring Boot: 사용하고자 하는 버전 선택 (최신 stable 버전 추천)
- Project Metadata:
- Group: com.example
- Artifact: demo
- Name: demo
- Description: Demo project for Spring Boot
- Package name: com.example.demo
- Packaging: Jar 선택
- Java: 11 선택
- Dependencies:
- Spring Web
- Spring Data JPA
- H2 Database
설정을 마쳤다면 ‘Generate’ 버튼을 눌러 프로젝트를 다운로드합니다. 다운로드한 zip 파일을 해제하고 원하는 위치에 저장합니다.
3.2 IDE에서 프로젝트 열기
IntelliJ IDEA를 실행한 후 ‘Open’ 버튼을 클릭하고, 방금 해제한 프로젝트 폴더를 선택합니다. IDE가 프로젝트를 불러오면, 필요한 의존성을 다운로드하며 초기 설정이 완료됩니다.
4. 프로젝트 구조 이해하기
프로젝트가 생성되면 기본적인 폴더 구조가 생성됩니다. 각 폴더의 역할을 이해하는 것은 향후 개발에 큰 도움이 됩니다.
4.1 주요 폴더 및 파일
- src/main/java: 애플리케이션의 메인 소스 코드가 위치하는 폴더입니다.
- src/main/resources: 설정 파일(yaml, properties) 및 정적 자원이 위치하는 폴더입니다.
- src/test/java: 테스트 코드가 위치하는 폴더입니다.
- pom.xml: Maven 프로젝트의 설정 파일로, 의존성과 플러그인을 관리합니다.
5. 간단한 RESTful API 만들기
이제 간단한 RESTful API를 만들어 보겠습니다. 예를 들어, ‘Hello, World!’를 반환하는 간단한 컨트롤러를 생성합니다.
5.1 컨트롤러 생성하기
src/main/java/com/example/demo 패키지 내에 HelloController.java라는 파일을 생성하고 아래 코드를 작성합니다:
package com.example.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, World!";
}
}
5.2 애플리케이션 실행하기
메인 애플리케이션 파일 (DemoApplication.java)을 열고, 아래 코드를 실행하여 서버를 시작합니다:
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
서버가 실행되면 브라우저에서 http://localhost:8080/hello로 접속하시면 ‘Hello, World!’ 메시지를 확인할 수 있습니다.
6. 데이터베이스 연동하기
이제 H2 데이터베이스를 연동하고, 간단한 CRUD 기능을 구현해 보겠습니다. H2 데이터베이스는 메모리 기반의 데이터베이스로 개발 및 테스트 용도로 적합합니다.
6.1 H2 데이터베이스 의존성 추가
pom.xml 파일에 H2 데이터베이스 의존성을 추가합니다:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
6.2 엔티티 클래스 생성하기
데이터베이스 테이블과 매핑할 엔티티 클래스를 작성합니다. src/main/java/com/example/demo 패키지에 User.java 파일을 생성합니다:
package com.example.demo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// Getters and Setters
}
6.3 레포지토리 인터페이스 생성하기
데이터베이스와의 상호작용을 위해 JPA 레포지토리 인터페이스를 생성합니다. src/main/java/com/example/demo 패키지에 UserRepository.java 파일을 생성합니다:
package com.example.demo;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository {
}
6.4 서비스 클래스 생성하기
비즈니스 로직을 처리하는 서비스 클래스를 생성합니다. src/main/java/com/example/demo 패키지에 UserService.java 파일을 생성합니다:
package com.example.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public List getAllUsers() {
return userRepository.findAll();
}
public User createUser(User user) {
return userRepository.save(user);
}
}
6.5 컨트롤러 업데이트하기
이제 새로운 기능을 구현하기 위해 HelloController를 업데이트합니다. src/main/java/com/example/demo 패키지의 HelloController.java를 수정하여 사용자 생성 및 조회 기능을 추가합니다:
package com.example.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping
public List getUsers() {
return userService.getAllUsers();
}
@PostMapping
public User createUser(@RequestBody User user) {
return userService.createUser(user);
}
}
6.6 테스트하기
Postman 또는 cURL을 이용하여 API를 호출하여 CRUD 기능을 테스트합니다. 사용자 정보를 DB에 저장하고 조회하는 것을 확인합니다.
7. 마무리 및 다음 단계
이상으로 스프링 부트를 활용한 간단한 백엔드 개발 강좌를 마치겠습니다. 이번 강좌를 통해 스프링 부트의 기본 개념과 프로젝트 설정 방법, RESTful API 생성 및 데이터베이스 연동 방법을 익히셨기를 바랍니다.
다음 강좌에서는 JWT 기반의 인증 및 인가, 사용자 정의 예외 처리, 테스트 작성 등의 고급 주제를 다룰 예정입니다. 계속해서 스프링 부트의 세계를 탐험해 보세요!