안녕하세요! 이번 강좌에서는 스프링 부트를 이용하여 간단한 블로그 애플리케이션을 개발하는 방법에 대해 알아보겠습니다. 구체적으로, 블로그 글 목록을 조회하기 위한 API를 구현하는 과정을 단계별로 살펴보겠습니다. 이 강좌를 통해 스프링 부트의 기본적인 구성 요소와 RESTful API 설계의 원리를 이해하고, 실전에서 어떻게 활용할 수 있는지를 배울 수 있습니다.
1. 스프링 부트 소개
스프링 부트는 자바 기반의 웹 프레임워크인 스프링의 일환으로, 개발자가 신속하게 새로운 애플리케이션을 구축할 수 있도록 도와줍니다. 스프링 부트는 복잡한 설정을 최소화하고, 필요한 기능들을 의존성 주입을 통해 쉽게 추가할 수 있게 해줍니다. 스프링의 강력한 기능을 활용하면서도 보다 간편한 개발 경험을 제공합니다.
2. 프로젝트 설정
우선, 스프링 부트 프로젝트를 생성해야 합니다. 이를 위해 Spring Initializr를 이용할 수 있습니다.
-
기본 설정
웹 페이지의 인터페이스는 RESTful API를 통해 구성하므로, ‘Spring Web’ 의존성을 추가합니다. 비즈니스 로직을 구성하기 위한 ‘Spring Data JPA’와 데이터베이스를 연결하기 위한 ‘H2 Database’를 추가합니다. -
프로젝트 메타데이터
Group:com.example
Artifact:blog
-
Java 버전
Java 11 이상을 사용하도록 설정합니다.
3. 기본 디렉토리 구조
생성한 프로젝트를 IDE(예: IntelliJ IDEA)에서 열고, 기본 디렉토리 구조를 확인합니다. 프로젝트는 다음과 같은 구조를 갖게 될 것입니다.
blog │ ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ └── example │ │ │ └── blog │ │ │ ├── BlogApplication.java │ │ │ ├── model │ │ │ ├── repository │ │ │ ├── service │ │ │ └── controller │ │ └── resources │ │ ├── application.properties │ │ └── static │ └── test └── pom.xml
4. 도메인 모델 정의
하나의 블로그 글을 표현하는 도메인 모델을 정의합니다. 이 모델은 블로그 글의 제목, 내용, 작성자, 작성 날짜 등을 포함해야 합니다.
package com.example.blog.model;
import javax.persistence.*;
import java.time.LocalDateTime;
@Entity
public class Post {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private String content;
private String author;
private LocalDateTime createdDate;
// getters and setters
}
5. JPA Repository 구현
JPA Repository를 통해 데이터베이스에 접근할 수 있도록 인터페이스를 정의합니다. 블로그 글 목록을 조회하는 메서드를 포함해야 합니다.
package com.example.blog.repository;
import com.example.blog.model.Post;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface PostRepository extends JpaRepository {
List findAll();
}
6. 서비스 레이어 구현
서비스 레이어를 만들어, 비즈니스 로직을 처리하는 클래스를 구현합니다. 여기서는 예를 들어 게시글 목록을 가져오는 메서드를 만들어 보겠습니다.
package com.example.blog.service;
import com.example.blog.model.Post;
import com.example.blog.repository.PostRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class PostService {
@Autowired
private PostRepository postRepository;
public List getAllPosts() {
return postRepository.findAll();
}
}
7. 컨트롤러 구현
RESTful API를 위한 컨트롤러를 생성하여 클라이언트의 요청을 처리합니다. 여기서는 HTTP GET 요청을 통해 블로그 글 목록을 조회하는 API를 만들겠습니다.
package com.example.blog.controller;
import com.example.blog.model.Post;
import com.example.blog.service.PostService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/api/posts")
public class PostController {
@Autowired
private PostService postService;
@GetMapping
public ResponseEntity> getAllPosts() {
List posts = postService.getAllPosts();
return ResponseEntity.ok(posts);
}
}
8. 애플리케이션 프로퍼티 설정
데이터베이스 연결을 위한 설정을 application.properties
파일에 추가합니다. H2 데이터베이스를 샘플로 사용합니다.
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true
spring.jpa.hibernate.ddl-auto=update
9. 애플리케이션 실행 및 테스트
이제 애플리케이션을 실행하고 PostController의 getAllPosts
API를 테스트해 보겠습니다. Postman 또는 curl을 사용하여 아래와 같은 요청을 보내면 됩니다.
GET http://localhost:8080/api/posts
위의 GET 요청을 통해 미리 입력된 게시글 목록이 반환되어야 합니다.
10. 결론
이번 강좌에서는 스프링 부트를 이용하여 간단한 블로그 글 목록 조회 API를 구현해 보았습니다. 이 과정을 통해 스프링 부트의 기본적인 구조와 RESTful API의 설계 원리를 배웠습니다. 추가적으로 사용자 인증 및 CRUD 기능을 구현하여 더 나아가보는 것도 좋은 방법입니다.
더 많은 스프링 부트 관련 자료를 찾아보며, 자신의 블로그 프로젝트를 계속 발전시켜 보세요!