1. 스프링부트 시작하기

Tasker_Jang·2024년 7월 22일
0

스프링부트의 주요 목표

  • 모든 스프링 개발자가 근본적으로 더 빠르고 쉽게 접근할 수 있는 시작 환경을 제공한다.
  • 곧바로 사용할 수 있는 옵션을 제공하되 기본값에서 벗어나는 요구사항이 생기면 쉽게 틀에서 벗어날 수 있다.
  • 비즈니스 로직과는 관련 없지만 대규모 프로젝트에서 흔히 필요한 기능들을 다양하게 제공한다.

시스템 요구사항

  • 스프링부트에서 직접 지원하고 있는 빌드 툴은 Maven과 Gradle 두가지이다.
  • 스프링부트는 자바 SDK v1.8 이상이 필요하다.

스프링부트 CLI

  • 스프링부트 CLI는 스프링으로 빠르게 프로토타입을 만들어 볼 수 있는 커맨드라인 툴이다.

스프링부트 개발 시작하기

  • 메이븐으로 먼저 시작하기!
    • start.spring.io에 접속해 의존성 검색기에서 “웹” 스타터를 선택하면 새 프로젝트 구조를 쉽게 만들 수 있다.

시작하기 전에.. 다음 명령어를 실행하여 유효한 자바와 메이븐 버전이 설치돼 있는지 확인하자!!

java –version / mvn –v

pom.xml 만들기

먼저 pom.xml 파일을 만들어야 한다. pom.xml은 프로젝트를 빌드하는 데 사용하는 레시피 같은 존재다.

의존성 추가하기

mvn dependency:tree

프로젝트 의존성 트리를 출력하는 명령어다. 필요한 의존성을 추가하려면 pom.xml을 열어 parent 섹션 바로 아래에 spring-boot-starter-web 의존성을 추가해야 한다.

코드 작성하기

src/main/java/MyApplication.java 라는 파일에 다음 코드를 작성해보자.

@RestController
@EnableAutoConfiguration
public class MyApplication {

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

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

}

여기 코드에서는 꽤 많은 일이 진행되고 있다.

MyApplication 클래스에서 첫 번째로 보이는 어노테이션은 @RestController다. stereotype 어노테이션이라고도 알려져 있다. 이 어노테이션은 코드를 읽는 사람들과 스프링에게 이 클래스가 담당하는 역할이 무엇인지 힌트를 주고 있다.

@RequestMapping 어노테이션은 “라우팅”정보를 제공한다. 이 어노테이션은 스프링에게 / 경로로 오는 모든 HTTP 요청은 home 메소드에 매핑되어야 한다는 점을 알려준다.

두 번째로 보이는 클래스 레벨 어노테이션은 @EnableAutoConfiguration이다. 이 어노테이션은 추가한 jar 의존성에 따라 스프링을 어떻게 구성해야 할지 “추측”하도록 스프링 부트에 지시한다.

애플리케이션에서 마지막으로 주목할 곳은 main 메소드다. 이 메소드는 자바 컨벤션에 따라 애플리케이션 진입점을 나타내는 표준 메소드다. 메인 메소드는 run을 호출함으로써 스프링부트의 SpringApplication 클래스에 위임한다. SpringApplication은 스프링을 시작해 애플리케이션을 부트스트랩하고 그에 따라 자동 설정된 톰캣 웹서버를 시작하게 된다. 우리는 run 메소드에 MyApplication.class를 인자로 전달해서 스프링의 주요 컴포넌트 중 하나인 SpringApplication에 이 클래스를 알려줘야한다. args 배열은 커맨드 라인 인자를 노출하기 위해 함께 전달한다.

예제 구동하기

mvn spring-boot:run
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v2.5.2)
....... . . .
....... . . . (log output here)
....... . . .
........ Started MyApplication in 2.222 seconds (JVM running for 6.514)

웹 브라우저를 하나 열어 localhost:8080으로 접속하면 다음과 같은 문구가 출력되는 게 보일 것이다.

애플리케이션을 정상적으로 종료하려면 ctrl-c를 누르면 된다.

실행가능한 jar 만들기.

실행 가능한 jar는 컴파일된 클래스와 코드를 실행하는 데 필요한 모든 jar 의존성을 함께 가지고 있는 아카이브다.

실행 가능한 jar를 생성하려면 pom.xml에 spring-boot-maven-plugin을 추가해야 한다. dependencies 색션 바로 아래에 다음 설정을 추가하자.

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

pom.xml을 저장하고 커맨드라인에서 다음과 같이 mvn package를 실행하자.

mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] .... ..
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.5.2:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

target 디렉토리를 보면 myproject-0.0.1-SNAPSHOT.jar가 있을 것이다. 이 애플리케이션을 실행하려면 다음과 같이 java –jar 명령어를 사용하자. 애플리케이션을 종료하려면 ctrl-c를 누르면 된다.

profile
터널을 지나고 있을 뿐, 길은 여전히 열려 있다.

0개의 댓글