Spring Core/01. Overview

03. Quick Start

  • -
반응형

이번 포스트에서는 앞서 설정한 환경을 점검할 겸 간단한 Quick Start application을 만들어보자.

Quick Start와 프로젝트 구성

 

Spring.io

Spring과 관련된 내용은 https://spring.io/에 잘 정리되어있다.

 

Spring | Home

Cloud Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform.

spring.io

아래 내용은 Quick Start(https://spring.io/quickstart/)의 내용을 활용한 내용 들이다.

 

프로젝트 생성

Spring을 개발할 때는 Maven 또는 Gradle같은 build tool을 이용하는데 여기서는 Maven을 이용해서 프로젝트를 진행해보자. [F1](또는 Ctrl+Shift+P )을 눌려 명령어 팔레트를 실행한 후 [Spring Initializr: Create a Maven Project]를 선택한다.

이후 가이드에 따라 적절한 버전을 선택하면서 프로젝트 구성을 완료하면 된다.

더보기

다음으로 Spring Boot의 버전을 선택한다. 3.x 버전을 선택하면 되는데 여기서는 3.2.2를 선택해보자.

다음으로 사용할 언어를 선택한다.  Java, Kotlin, Groovy 중 Java를 선택하자.

다음으로 프로젝트의 group id를 입력한다. group id는 통상 회사의 identity에 대한 부분으로 도메인을 거꾸로 사용한다.

다음으로 프로젝트의 내용에 해당하는 artifact id를 입력한다. 프로젝트가 생성되면 [group id ].[artifact id]가 기본 패키지 이름이 된다.

다음은 결과물을 패키징할 방식으로 단독 실행하는 형태라면 jar, was에 배포하는 형태라면 war를 사용한다. 여기서는 jar를 선택한다.

다음은 Java Version이다. 앞서 설치한 17 버전을 선택한다.

마지막으로 프로젝트에서 사용할 의존성들(라이브러리)을 선택한다. 기존에 썼던 의존성을 재사용하려면 Last Used를 사용하거나 필요한 의존성을 검색해서 추가할 수 있다. 여기서 추가하지 않았다고 하더라도 나중에 [Add Starter] 메뉴를 이용하거나 pom.xml에 직접 등록할 수 있으니 걱정할 필요는 없다.

여기서는 Spring Boot DevTools, Spring Web을 선택하자. 선택이 완료되면 [Selected 2 dependency]를 클릭해서 설정을 마무리 한다. 

다음은 선택한 의존성들에 대한 대략적인 설명이다.

  • Spring Boot DevTools: DevTools는 개발에 편리한 기능들을 제공한다. 예를 들어 사용하는 리소스, 자바 파일 등이 변경되면 애플리케이션을 다시 실행해 주고 웹 페이지를 사용할 때 캐싱을 사용하지 않아서 변경 내용을 바로 반영하게 한다.
  • Spring Web: Web 프로그래밍을 위한 라이브러리들이 추가된다.

 

마지막으로 프로젝트를 저장할 경로를 선택하면 프로젝트 생성이 완료된다.

 

SpringBoot 프로젝트의 기본 구조

생성된 프로젝트의 구조를 살펴보자.

파일 및 폴더 설명
src/main/java 일반적으로 자바파일을 작성하는 곳
프로젝트 생성 시 설정했던 groupid.artifactid를 패키지로 XXApplication.java 파일이 있는데 이는 부트 애플리케이션의 실행파일로 main 메서드 생성
src/main/resources xml이나  properties 파일 등 java 이외의 리소스들을 관리
 - static 경로에는 웹에서 사용되는 정적 파일인 html, css, js 등 관리
 - template에서는 Thymeleaf, Mustache 등 웹 템플릿 엔진의 소스 파일 관리
 - application.properties는 스프링 애플리케이션의 모든 설정 정보를 저장하는 아주 중요한 파일로 .properties 또는 .yml 형태로 작성
src/test/java 주로 Junit을 이용한 단위테스트와 관련된 java 파일 저장
src/test/resources 필요시 테스트용으로 src/main/resources에 설정된 내용을 파일 단위로 재정의해서 저장
즉 main/resources/application.yml 과 test/resources/application.yml 이 동시에 있을 때 테스트 환경에서는 test하위 자료만 사용. 만약 test 아래에 자료가 없으면 main의 자료 사용
pom.xml Maven 기반 프로젝트에서 프로젝트의 라이브러리, 플러그인 관리, 및 배포 빌드 담당

 

코드 수정하기: QuickStartApplication.java

이제 약간의 코드를 추가해서 동작시켜 보자. 아직은 학습 전이므로 코드의 의미 보다는 환경 점검에 집중하자. [src/main/java] 영역의 QuickStartApplication.java에 hello 라는 메서드를 추가하자.

package com.doding.quickstart;

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

@SpringBootApplication
@RestController
public class QuickstartApplication {

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

	@GetMapping("/hello")
	public String hello(@RequestParam(defaultValue = "Spring") String name) {
		return String.format("Hello %s", name);
	}
}

위 코드에서 웹 프로그래밍의 향기를 느꼈다면 일단 성공이다. 대략의 의미는 '/hello' 형태로 요청이 들어오면 "Hello Spring"의 형태로 반환하겠다는 의도이다.

 

실행하기

Spring Boot Dashboard Extension에서 애플리케이션을 선택 후 실행 버튼을 클릭한다.

그러면 스프링 로고와 함께 로그들이 출력되는데 놀랍게도 WAS인 Tomcat이 8080포트에서 실행되고 있으며 이때 context 이름은 ''(빈 문자열)로 설정된 것을 알 수 있다.

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.2.2)

2024-01-21T17:08:13.538+09:00  INFO 68881 --- [  restartedMain] c.d.g.GettingstartedApplication          : Starting GettingstartedApplication using Java 17.0.9 with PID 68881 (/Volumes/Data/workspace/inflearn/core/gettingstarted/gettingstarted/target/classes started by quietjun in /Volumes/Data/workspace/inflearn/core/gettingstarted/gettingstarted)
2024-01-21T17:08:13.540+09:00  INFO 68881 --- [  restartedMain] c.d.g.GettingstartedApplication          : No active profile set, falling back to 1 default profile: "default"
2024-01-21T17:08:13.568+09:00  INFO 68881 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2024-01-21T17:08:13.568+09:00  INFO 68881 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2024-01-21T17:08:14.002+09:00  INFO 68881 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port 8080 (http)
2024-01-21T17:08:14.008+09:00  INFO 68881 --- [  restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2024-01-21T17:08:14.009+09:00  INFO 68881 --- [  restartedMain] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.18]
2024-01-21T17:08:14.032+09:00  INFO 68881 --- [  restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2024-01-21T17:08:14.032+09:00  INFO 68881 --- [  restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 464 ms
2024-01-21T17:08:14.193+09:00  INFO 68881 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
2024-01-21T17:08:14.208+09:00  INFO 68881 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port 8080 (http) with context path ''
2024-01-21T17:08:14.213+09:00  INFO 68881 --- [  restartedMain] c.d.g.GettingstartedApplication          : Started GettingstartedApplication in 0.845 seconds (process running for 1.19)

 

다시 Spring Boot Dashboard에서 gettingstarted를 살펴보면 지구본 모양의 실행 버튼이 있고 이를 클릭하면 WAS에 context의 웰컴파일을 요청하게 된다. 

물론 아직은 없기 때문에 404 오류가 발생한다. URL을 http://localhost:8080/hello 로 수정하고 요청했을 때 "Hello, Spring"이 확인된다면 성공적으로 환경 설정이 완료된 것이다.

 

반응형

'Spring Core > 01. Overview' 카테고리의 다른 글

04. application 설정 파일 작성  (2) 2024.03.11
02. 환경설정 및 기본 곁가지 점검  (0) 2020.06.15
01. Spring Framework  (0) 2020.06.09
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.