seonggoc

Spring Boot 튜토리얼 본문

Spring

Spring Boot 튜토리얼

seonggoc 2024. 12. 30. 15:06

Spring Boot 튜토리얼

  • 기존에 42에서 C/C++, Python을 통해 개발을 진행해왔지만, 백엔드 개발자를 지망하여 Java와 Spring을 학습하게 되었다.

학습 방법

어떻게 공부할 것인가?

기존 지식

  • 기존에 나는 C/C++를 통해 운영체제, 네트워크 관련 지식을 익혔고, Django를 통해 백엔드 개발을 해본적 있고 Docker, Docker-Compose, Nginx 정도 다뤄본 적이 있다.
  • Java 문법은 거의 모르는 상태로 1시간 정도 벼락치기로 조금 봤는데 C/C++와 유사한 부분이 많아 Spring과 Java를 동시에 배우는게 낫겠다라는 생각이 들었다.

모르는 것

  • 다 모르지만 굳이 아는 선에서 생각하자면 Django와 유사한 점을 착안하면, 빌드하고, 정적 파일 처리하는 부분과 WAS처럼 동적으로 처리하는 부분, 각종 라이브러리 등을 모르는 것 같다.

어떻게 공부할 것인가

  1. 전체적인 프로세스 흐름을 파악하기 위해 공식 홈페이지 Spring.io에 있는 튜토리얼을 따라가며 중간준간 모르는 부분은 구글링과 챗지피티를 활용할 예정이다.
  2. 중간중간 필요한 Java를 학습..?

Spring Boot Tutorial

필수 조건

  1. 당연히 Java가 설치되어 있어야한다.
  2. Maven 또는 Gradle이 설치 되어야한다. (나는 Gradle을 설치했다.)

  1. 자바 설치 방법
    자바가 없으면 설치해야한다.

나는 맥북 에어 M1을 사용하고 있어서 brew를 통해 설치하기로 했고, 제일 최신 버전을 사용할 예정이다.

# 혹시 모르는 brew 업데이트
brew update

# brew를 통해 openjdk 설치
brew install openjdk

# sudo는 슈퍼유저 권한하는 프로그램, ln은 심볼릭 링크 관련 프로그램.
# ln을 통해 심볼릭 링크를 연결하는 것.
sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

# echo는 출력하는 프로그램
# 실제는 export 프로그램을 통해 환경변수 값을 설정하는 것인데 맥m1은 기본 인터프리터가 zsh이기 때문에 zsh이 실행될 때마다 환경 변수 끝부분에 >> (append)를 해줌
echo 'export PATH="/opt/homebrew/opt/openjdk@23/bin:$PATH"' >> ~/.zshrc

# 컴파일러 플래그
export CPPFLAGS="-I/opt/homebrew/opt/openjdk@23/include"
  1. gradle 설치
brew install gradle

쉘 스크립트는 이전에 minishell 과제를 하면서 고통을 많이 받았던 터라 이해하기가 쉬웠다.

아래와 같이 나오면 문제 없는 것이다. (버전은 시간에 따라 변할듯)

빌드

gradle을 통해 빌드

gradle은 빌드하는 프로그램이다. makefile, dockerfile, docker-compose와 같이 자동으로 빌드하는 프로그램이라 문법이 어렵지 않고 단순하다. 다만, 일반 프로그래밍 언어처럼 자주 쓰지 않을 것 같아 자연스럽게 쓰기에는 좀 시간이 걸릴 것 같다.

build.gradle이라는 파일을 만들고 아래의 코드를 붙여 넣는다

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.4.1'
}

apply plugin: 'io.spring.dependency-management'

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

repositories {
    mavenCentral()
}

dependencies {
}

상위 내용을 잘 썼으면 아래의 명령어로 테스트를 해볼 수 있다.

gradle classes

실제 의존성 파일만드는 명령어

gradle dependencies

수정

사실 벌써 모든 과정이 끝난 것이긴 한데 코드는 짜는게 아니라 수정부터 시작이기에..

  1. 기존에 빌드했던 부분에서 부족한 의존성이 있다면 dependencies를 추가해주면 된다
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
}
  1. 메인 페이지를 만들어준다.

/src/main/java/MyApplication.java를 만들고 아래의 내용을 넣는다.

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class MyApplication {

    @RequestMapping("/")
    String home() {
        return "Hello World!";
    }

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }

}
  1. 홈페이지 빌드
gradle bootRun

이후 localhost:8080에 가보면 잘 나오는 것을 알 수 있다.

📚Refernce

  1. Spring Tutorial
  2. Gradle vs Maven
  3. openjdk 설치