블로그 화면 구성 예제 및 실행 테스트하기
1. 스프링 부트란?
스프링 부트(Spring Boot)는 스프링 프레임워크를 기반으로 한 Java 기반의 웹 애플리케이션 개발을 위한 프레임워크입니다.
Spring Framework는 복잡성으로 인해 많은 개발자들이 어려움을 겪고 있으며, 스프링 부트는 이를 완화하기 위해 설계되었습니다.
스프링 부트는 설정을 최소화하고, 사용자가 원하는 기능을 쉽게 추가할 수 있도록 도와줍니다.
Spring Boot의 주요 목적은 빠른 개발 및 배포 프로세스를 가능하게 하고, 다양한 프로젝트에서 일관된 경험을 제공하는 것입니다.
2. 스프링 부트의 주요 특징
- 자동 설정: 많은 설정을 자동으로 처리하여 개발자가 필요한 부분에만 집중할 수 있도록 합니다.
- 독립 실행형: 외부 웹 서버에 배포할 필요 없이, 내장 서버(예: Tomcat, Jetty)와 함께 실행됩니다.
- 의존성 관리: Maven 또는 Gradle을 통해 필요한 라이브러리를 쉽게 관리할 수 있습니다.
- 스프링 생태계 통합: Spring Data, Spring Security 등 다양한 모듈과의 통합이 용이합니다.
3. 스프링 부트 개발 환경 설정
스프링 부트를 개발하기 위해 아래와 같은 환경을 설정해야 합니다:
- Java Development Kit (JDK) 설치: JDK 1.8 또는 그 이상의 버전을 설치합니다.
- IDE 선택: IntelliJ IDEA, Eclipse, VSCode 등과 같은 IDE를 선택합니다.
- 빌드 도구 선택: Maven 또는 Gradle 중 하나를 선택하여 프로젝트를 관리합니다.
다음은 IntelliJ에서 스프링 부트 프로젝트를 생성하는 방법입니다:
- IntelliJ IDEA를 실행하고 “New Project”를 선택합니다.
- Spring Initializr를 선택한 후, 필요한 설정(프로젝트 메타데이터 등)을 입력합니다.
- 필요한 의존성(예: Spring Web, Spring Data JPA 등)을 추가합니다.
- 프로젝트를 생성한 후 IDE에서 열립니다.
4. 블로그 화면 구성 예제
이번 강좌에서는 기본적인 블로그 애플리케이션을 구축하는 것을 목표로 하겠습니다.
우리는 게시글을 작성하고 조회할 수 있는 기능을 구현할 것입니다.
4.1 데이터베이스 설계
블로그 애플리케이션에서는 게시글을 저장하기 위한 데이터베이스 테이블이 필요합니다.
간단하게 아래와 같은 구조로 설계해보겠습니다.
CREATE TABLE posts (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
4.2 엔티티 클래스 생성
JPA를 사용하여 게시글에 해당하는 엔티티 클래스를 생성합니다.
import javax.persistence.*;
import java.time.LocalDateTime;
@Entity
@Table(name = "posts")
public class Post {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
@Column(columnDefinition = "TEXT")
private String content;
private LocalDateTime createdAt = LocalDateTime.now();
// Getters and Setters
}
4.3 레포지토리 인터페이스 생성
JPA 레포지토리를 사용하여 데이터베이스를 조작합니다.
import org.springframework.data.jpa.repository.JpaRepository;
public interface PostRepository extends JpaRepository {
}
4.4 서비스 클래스 생성
비즈니스 로직을 처리할 서비스 클래스를 생성합니다.
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();
}
public Post createPost(Post post) {
return postRepository.save(post);
}
}
4.5 REST 컨트롤러 생성
HTTP 요청을 처리할 RESTful 컨트롤러를 작성합니다.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/posts")
public class PostController {
@Autowired
private PostService postService;
@GetMapping
public List getAllPosts() {
return postService.getAllPosts();
}
@PostMapping
public Post createPost(@RequestBody Post post) {
return postService.createPost(post);
}
}
4.6 애플리케이션 프로퍼티 설정
데이터베이스 연결정보를 설정하기 위해 application.properties
파일을 수정합니다.
spring.datasource.url=jdbc:mysql://localhost:3306/your_db_name
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.jpa.hibernate.ddl-auto=update
5. 실행 테스트하기
애플리케이션을 실행하여 API를 테스트합니다.
Postman과 같은 툴을 이용해 REST API를 호출할 수 있습니다.
5.1 GET 요청 테스트
모든 게시글을 조회하는 GET 요청을 보내고,
응답으로 JSON 형식의 데이터가 반환되면 성공입니다.
5.2 POST 요청 테스트
새로운 게시글을 작성하는 POST 요청을 통해 데이터베이스에 데이터를 저장해봅니다.
요청 본문에는 제목과 내용을 포함시켜야 합니다.
5.3 예외 처리와 응답 형식
더 나아가, 적절한 에러 처리를 구현하고,
적절한 HTTP 응답 상태 코드를 반환하도록 코드를 개선할 수 있습니다.