Spring Boot 기초: 웹 애플리케이션 설정

2024. 11. 10. 13:35·🗄️ Backend/Spring

Spring Boot는 Java 기반의 웹 애플리케이션을 빠르고 간편하게 개발할 수 있는 프레임워크입니다.

이번 포스트에서는 Spring Boot를 사용하여 간단한 웹 애플리케이션을 설정하고 실행하는 방법에 대해 상세히 설명합니다.

이 예제에서는 WebConfig, TestVO, HomeController 등을 활용하여 Spring Boot 프로젝트를 구성하고,

타임리프(Thymeleaf)를 사용한 템플릿 렌더링까지 다룹니다.

1. Spring Boot 프로젝트 설정

WebConfig.java - 스프링 설정 파일

WebConfig.java는 Spring의 설정 파일로, 스프링 빈을 등록하고 프로퍼티 값을 주입받을 수 있는 역할을 합니다. 또한, @Value 애노테이션을 사용하여 application.properties 또는 외부 프로퍼티 파일에서 설정된 값을 가져올 수 있습니다.

package cohttp://m.simple.basic.config;

import cohttp://m.simple.basic.command.TestVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration  // 이 클래스는 Spring 설정 파일임을 나타냅니다.
@PropertySource("classpath:/hello.properties")  // hello.properties 파일을 참조합니다.
public class WebConfig implements WebMvcConfigurer {

    @Value("${server.port}")  // application.properties 파일의 server.port 값을 주입받습니다.
    String port;

    @Value("${hello}")  // hello.properties 파일의 hello 값을 주입받습니다.
    String hello;

    @Value("${bye}")  // hello.properties 파일의 bye 값을 주입받습니다.
    String bye;

    @Autowired
    ApplicationContext applicationContext;  // 스프링의 ApplicationContext를 주입받습니다.

    @Bean  // 이 메서드를 실행해서 반환하는 객체를 스프링 빈으로 등록합니다.
    public void test() {
        TestVO vo = applicationContext.getBean(TestVO.class);  // TestVO 빈을 가져옵니다.
        System.out.println("context 안에 TestVO 빈: " + vo);
        System.out.println("application.properties의 server.port 값: " + port);
        System.out.println("hello의 키값: " + hello);
        System.out.println("bye의 키값: " + bye);
    }
}

hello.properties - 프로퍼티 파일

hello.properties 파일은 애플리케이션의 설정 값을 외부에서 관리할 수 있도록 해주는 프로퍼티 파일입니다. 아래 예시에서는 서버 포트, 애플리케이션 이름, 그리고 간단한 텍스트 값을 설정했습니다.

spring.application.name=BootBasic  # 애플리케이션 이름
server.port=8181  # 서버 포트 번호
spring.devtools.livereload.enabled=true  # 개발 중 라이브 리로드 활성화
spring.devtools.restart.enabled=true  # 애플리케이션 재시작 활성화

hello=hello world  # hello 메시지
bye=bye world  # bye 메시지

TestVO.java - 데이터 객체

TestVO.java는 데이터 객체(Data Object)로, 롬복(Lombok)을 사용하여 클래스에 필요한 기본적인 메서드들(생성자, getter, setter 등)을 자동으로 생성하는 예제입니다.

package cohttp://m.simple.basic.command;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@AllArgsConstructor  // 모든 멤버 변수를 받는 생성자 생성
@NoArgsConstructor   // 기본 생성자 생성
@Data               // getter, setter, toString을 자동으로 생성
public class TestVO {
    private String name;  // 이름
    private int age;      // 나이
    private String addr;  // 주소
}

HomeController.java - 컨트롤러 클래스

HomeController.java는 Spring MVC에서 웹 요청을 처리하는 컨트롤러 클래스입니다. @GetMapping("/") 애노테이션을 사용하여 루트 경로(/)로 들어오는 GET 요청을 처리하고, index.html 템플릿을 반환합니다.

package cohttp://m.simple.basic.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller  // 이 클래스가 컨트롤러 역할을 함을 명시
public class HomeController {

    @GetMapping("/")  // 루트 경로로 GET 요청이 오면 실행됩니다.
    public String home() {
        return "index";  // src/main/resources/templates/index.html 파일을 반환합니다.
    }
}

build.gradle - Gradle 빌드 스크립트

Gradle을 사용하여 의존성을 관리합니다. build.gradle 파일에는 Spring Boot, Thymeleaf, Lombok, 그리고 테스트 의존성 등이 포함되어 있습니다.

plugins {
    id 'org.springframework.boot' version '2.7.18'  // Spring Boot 플러그인
    id 'io.spring.dependency-management' version '1.1.6'  // 의존성 관리 플러그인
    id 'java'  // Java 플러그인
}

group = 'com.example'  // 그룹 아이디
version = '0.0.1-SNAPSHOT'  // 버전
sourceCompatibility = '11'  // Java 버전

repositories {
    mavenCentral()  // 중앙 Maven 저장소
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'  // 타임리프
    implementation 'org.springframework.boot:spring-boot-starter-web'  // 웹 모듈
    compileOnly 'org.projectlombok:lombok'  // Lombok
    developmentOnly 'org.springframework.boot:spring-boot-devtools'  // 개발 도구
    annotationProcessor 'org.projectlombok:lombok'  // Lombok 어노테이션 프로세서
    testImplementation 'org.springframework.boot:spring-boot-starter-test'  // 테스트 모듈
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'  // JUnit 플랫폼 런처
}

test {
    useJUnitPlatform()  // JUnit 플랫폼 사용
}

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(11)  // JDK 버전 설정
    }
}

2. 타임리프(Thymeleaf) 설정 및 사용

Spring Boot에서는 타임리프(Thymeleaf)를 템플릿 엔진으로 사용하여 HTML 파일을 뷰로 렌더링할 수 있습니다. 타임리프는 서버 사이드에서 HTML을 렌더링할 수 있게 해주며, Spring Boot와 잘 통합됩니다.

타임리프 의존성 추가

build.gradle 파일에 이미 타임리프 의존성이 추가되어 있습니다.

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'  // 타임리프 뷰
    implementation 'org.springframework.boot:spring-boot-starter-web'  // 부트 웹 모듈
    // 나머지 의존성
}

타임리프 템플릿 파일 작성

타임리프 템플릿 파일은 src/main/resources/templates 폴더에 위치해야 하며, index.html 템플릿 파일을 작성해봅니다.

src/main/resources/templates/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>타임리프를 사용한 뷰 렌더링</h1>
    <p>Spring Boot와 Thymeleaf를 통합하여 만든 예제입니다.</p>
</body>
</html>

컨트롤러 수정

컨트롤러에서 타임리프 템플릿을 반환하도록 설정합니다. 이전에 작성한 HomeController에서 루트 경로로 들어오는 요청에 대해 index.html을 반환하도록 합니다.

package cohttp://m.simple.basic.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller  // 이 클래스가 컨트롤러 역할을 함을 명시
public class HomeController {

    @GetMapping("/")  // 루트 경로로 GET 요청이 오면 실행됩니다.
    public String home() {
        return "index";  // src/main/resources/templates/index.html 파일을 반환합니다.
    }
}

3. 애플리케이션 실행

애플리케이션을 실행하고, 브라우저에서 http://localhost:8181/로 접속하면, 타임리프가 렌더링한 index.html 템플릿이 출력됩니다.

실행 방법

  • Gradle을 통한 실행:

    ./gradlew bootRun
  • IDE (IntelliJ IDEA, Eclipse 등): HomeController가 정의된 프로젝트를 실행하면, 자동으로 내장 Tomcat 서버가 시작됩니다.

브라우저에서 http://localhost:8181/에 접

속하면, 타임리프 템플릿이 렌더링된 결과를 확인할 수 있습니다.

이번 포스트에서는 Spring Boot를 사용하여 간단한 웹 애플리케이션을 설정하는 방법을 배웠습니다.
이 예제에서는 기본적인 Spring Boot 설정, 프로퍼티 파일 관리,
컨트롤러 작성 및 타임리프를 통한 뷰 렌더링까지 다양한 개념을 다뤘습니다.
이와 같은 설정을 통해 빠르게 웹 애플리케이션을 개발할 수 있습니다.

'🗄️ Backend > Spring' 카테고리의 다른 글

Spring Boot 아키텍처 : Entity, DTO, Repository, Service, Controller 흐름과 활용  (1) 2025.01.28
SpringBoot 비동기(Async) 처리  (6) 2025.01.17
HikariCP, MyBatis를 활용한 데이터베이스 연결 풀 설정 및 최적화  (1) 2024.11.10
스프링 프레임워크에서 Redirect, Request, Response 처리 및 서비스 계층 구현  (8) 2024.11.09
스프링 프레임워크(Spring Framework) 기본 개념과 활용  (3) 2024.11.09
'🗄️ Backend/Spring' 카테고리의 다른 글
  • Spring Boot 아키텍처 : Entity, DTO, Repository, Service, Controller 흐름과 활용
  • SpringBoot 비동기(Async) 처리
  • HikariCP, MyBatis를 활용한 데이터베이스 연결 풀 설정 및 최적화
  • 스프링 프레임워크에서 Redirect, Request, Response 처리 및 서비스 계층 구현
hjwjo
hjwjo
백엔드 및 풀스택 개발에 관심 있는 초보 개발자의 개발 블로그입니다.
  • hjwjo
    Jeongwoo's Devlog
    hjwjo
  • 전체
    오늘
    어제
    • Devlog
      • 🗄️ Backend
        • Java
        • Spring
        • JPA
        • SQL
        • JSP
        • AWS
        • GCP
        • Linux
        • GitHub
        • ML
        • Security
      • 🖥️ Frontend
        • React
        • CSS
      • 🏅 Project
        • Hackathon
        • Team Project
      • 📊 Algorithm
        • BOJ
      • 📜 Certs
        • ADsP
        • SQLD
        • 정보처리기사
      • 📖
        • JavaScript
      • 일상
        • 면접후기
  • 블로그 메뉴

    • 홈
    • Devlog
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    AWS
    ADsP
    백준
    쿼리
    DML
    정보처리기사
    http
    백엔드
    Spring
    SQL
    GCP
    java기초
    java
    스프링부트
    데이터베이스
    jsp
    자바
    스프링
    springboot
    정처기
  • 최근 댓글

  • 최근 글

hjwjo
Spring Boot 기초: 웹 애플리케이션 설정
상단으로

티스토리툴바