본문 바로가기
개발툴/Spring Boot(STS)

Spring Boot 프로젝트 생성

by HmHjj 2021. 12. 14.
728x90
반응형

 

이전 블로그에서 Spring Boot 설치하는 방법을 작성하였습니다. 

https://hmhjj.tistory.com/15

 

Spring Boot 설치 (STS) 및 설정

스프링 부트란? ( Spring Boot ) Spring은 Spring Framework의 의미로 JAVA 플랫폼을 사용 위한 오픈 소스 애플리케이션 프레임워크이며, WAS를 포함한 어플리케이션을 복잡한 XML 설정 같은 작업들을 단순화

hmhjj.tistory.com

이번에는 프로젝트 생성하여 간단한 Web 서버 프로그램을 만들어 보겠습니다. 

 

Spring Boot 프로젝트 생성

STS를 실해하여 왼쪽 Package Explorer 아래 Create new Spring Starter Project를 클릭합니다. 

 

New Spring Starter Project 화면이 나오고 기본 Setting으로 자동 설정되어 있습니다.  Maven Project로 많이들 사용하실 테니 이번엔 Gradle로 만들어서 진행하겠습니다. 

Project Type은 2가지로 Maven Project 와 Gradle Project가 있다. Maven은 프로젝트 빌드 및 외부 라이브러리 종속성을 설정하기 위한 pom.xml을 사용한다. gradle 은 build.gradle 파일로 Maven의 pom.xml과 같은 역할을 하지만 gradle의 경우에는 이미 업데이트된 항목에 대해서는 작업을 하지 않기에 빌드 속도가 더 빠르며, 코드 사용도 더 직관적이라 보기 쉽다. 

Maven 방식 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.4.4</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.test</groupId>
	<artifactId>test</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>test</name>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

 

Gradle 방식의 build.gradle

plugins {
	id 'org.springframework.boot' version '2.4.3'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id 'java'
}

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}
dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
}

test {
	useJUnitPlatform()
}

다은으로 Type 옆에 Packaging을 보면 2개 파일 형식으로 설정이 가능하다.  Jar(Java Archive)의 경우는 web server를 포함하여 JRE를 사용하여 바로 web 서비스가 가능하다. War(Web application Archive)의 경우에는 다른 웹서버(WEB) 또는 WAS를 통하여 서비스를 해야한다. 다른 서버 설치 없이 바로 웹서비스를 사용하기 위해 Jar 선택하여 진행한다. 

밑에 Java Version 은 8 , 11 , 17 중에 선택하게 되어 있다. Spring Boot 2.x 이후로는 JAVA 1.8 이상 사용해야 한다. 이전에 설치한 8버전으로 선택하여 진행한다. 

Package 명이나 다른 이름들을 변경하였다. 만들기 전 변경 내용 캡쳐 화면이다. 

Next를 누르면 종속성 설정 화면으로 넘어간다. 

 

맨위에 Spring Boot Version을 선택할 수 있다. 현재 최신 Releas 가 2.6.1로 SNAPSHOT의 경우에는 매일매일 업데이트되어 달라질 수 있는 버전으로 정식 릴리즈 되지 않은 버전이다. 

GA (General Availability) 버전이 정식 릴리즈 버전이다. https://spring.io/projects/spring-boot#learn

 

버전에 따른 지원 날짜도 명시되어 있다. 

이제 아래에 Developer Tools 를 시작으로 추가할 수 있는 종속성 목록들을 확인해 보자. Web 서버를 만들어 볼 것이니 아래로 내려 보면 Web 항목을 클릭해 보면 여러 가지 항목들이 나온다.  그중에 Spring Web 위에 커서를 올려놓으면 아래와 같이 설명이 나온다. 가이드에 세부 항목들을 클릭하면 자세한 설명이 나온 링크로 연결된다. 

Web Server를 만들거니 Web - Spring Web 을 선택한다. 

그리고 최상단에 Developer Tools - Spring Boot DevTools를 선택한다. 요거는 헬퍼에도 나오지만 실시간으로 변경 내용들을 반영해주고 소스 변경 시 application 재시작을 빠르게 도와준다. 

이제 설정을 완료 했으면 오른쪽 Selected: 에 2개의 항목이 추가 된다. 지금 꼭 모든 dependency를 추가할 필요는 없다.  완료 후 필요한 라이브러리가 있다면 나중에 추가 해도 된다. 

바로 Finish를 눌러도 되지만 Next로 한번 가보자. Site Info 라고 Url 화면이 나온다. 

Base Url 주소가 https://start.spring.io/ 로 시작 되는데 저 주소로 한번 가보면 이전에 설정 했던 내용들을 웹 화면에서 볼 수 있다. 여기에서 프로젝트 설정 후 GENERATE를 클릭하면, 프로젝트를 다운로드 할 수 있다. 결국엔 STS 에서 Web에 정보를 던져 프로젝트를 받아오는 형태라고 보면 된다. Full Url 을 브라우저에 복사해서 붙여 넣으면 웹에서 받는 동일한 파일을 다운로드 할 수 있다. 

이제 finish를 누르면 다음과 같이 Package Explorer에 프로젝트가 생성 된 모습을 볼 수 있다. 

그리고 하단에 표시줄에 보면 아래와 같이 외부에서 라이브러리를 받아오고 있는 중이다. 

작업이 완료되면 아래와 같이 항목들이 다 체워져 있다. 

webserver

활성화하여 구조를 확인해 보자.

- webserver 아래 src/main/java 가 메인 java 소스가 들어갈 부분이다. WebserverApplication.java 라는 이름으로 자동으로 메인 소스가 생성되어 있다. 

- src/main/resources 부분인데 페이지를 구성하는 html , css 등의 파일이 들어간다. 여기에 application.properties 파일이 파일명 그대로 웹 어플리케이션의 속성들을 적용하기 위한 파일이다. 나중에 자세히 소개해 보겠다. 

- src/test/java 테스트를 위한 소스가 들어가는 위치이다. 

- JRE System Library [JavaSE-1.8] 보이는 그대로 java 1.8이 설정 된 모습으로 클릭하면 추가된 java system library를 확인 할 수 있다. 

- Project and External Dependencies 눌러서 보면 많은 라이브러리 들이 들어가 있는 것을 확인해 볼 수 있다. 처음 프로젝트 생성 시 spring boot 에 필요한 라이브러리를 넣는 작업 결과를 여기에서 확인 할 수 있는 것이다. 

build.gradle

 build.gradle은 의존성이나 플러그인 설정 등을 위한 스크립트 파일이다.  파일이 어떻게 되어있는지 확인해 보자. 

- plugins 에는 springframework.boot 2.6.1 버전이 포함되어 있고, io.spring.dependency-management 는 Spring Boot 에 맞는 라이브러리 버전을 자동으로 추가해 주는 역할을 합니다. 자동으로 안 하려면 버전을 명시해 주면 됩니다. java 사용을 위해 plugin 에 적용되어 있다.  

- group 은 패키지명이고  version 은 자동으로 배포 파일 뒤에 이름으로 적용된다. sourceCompatibility 는 java 사용 버전을 나타낸다. 

- repositoryies 는 의존 라이브러리를 어떤 저장소에서 받을지를 정해준다. 구글 안드로이드 레파지토리도 있다고 한다. 

자세한 내용은 링크에서 더 보길 바란다. 

https://docs.gradle.org/current/userguide/declaring_repositories.html

- dependencies 에는 처음 설정한 spring web 과 devtools 가 추가 된 설정을 확인 할 수 있고, 여기에 추가로 넣고 싶은 라이브러리를 작성하면 된다. 2개는 이전 설정에 추가한 종속성인데 마지막 test는 기본으로 들어가게 된다. 

- 마지막 useJUnitPlatform 은 단위 테스트를 할 수 있게 해주는 프레임워크로 'org.springframework.boot:spring-boot-starter-test' 가 종속성에 들어가 있어야만 사용 가능하다. 

gradlew.bat

빌드 된 프로젝트를 배포 패키지 파일로 만드는 bat 스크립트다. 

 

settings.gradle

프로젝트의 구성 정보를 기록하는 파일로 여러 서브 프로젝트들의 관계를 설정하여 관리하는 역할을 한다. 


Spring Boot 프로그램 작성

이제 드디어 소스를 추가하고 간단한 Hello world 페이지를 만들어 봅시다. 

 

패키지 생성

src를 우클릭하여 package를 추가해 봅시다. 

이름은 controller 로 하여 사용합니다. 

빈 com.server.controller가 생성 되면 우클릭하여 class 를 추가 합니다. 

HomeController 라는 이름으로 Class를 생성합니다. 

생성 된 HomeController 에 페이지를 호출할 내용을 작성합니다. 

package com.server.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {
	@RequestMapping("/hello")
	public String homehello() {
		return "hello world!!";
	}
}

작성 시 어노테이션(@) 사용 시 @RestC 만 누르고 Ctrl + Space 를 누르면 자동으로 import 가 되고 완성 됩니다. 

 

이제 프로젝트를 실행해 봅니다. 우클릭해서 Run As - Java Application 을 클릭해 보자. 상위 탭에 Run - Run 또는 Ctrl + f11 도 바로 실행 가능하다. 

Application을 선택하라고 뜨면 WebserverApplication을 선택하여 실행해 준다. 

포트를 사용하는 거라 보안경고도 뜰 수 있다. 당연히 액세스 허용 해 줘야 한다. 

 

STS 하단에 실행 로그가 쭈욱 올라 온다. 맨 밑에 Started WebserverApplication ... 잘 올라 왔다는 로그 내용과 바로 위에 8080으로 시작 되었다고 보여 준다. 포트는 application.properties 나 실행 시 바꿀 수 있다. 중간에 빨간 네모 박스를 누르면 Application 이 종료 된다. 

이제 브라우저로 서비스에 접근 해 본다.  hello world!! 가 정상 출력 된 것을 확인 할 수 있다. 

http://localhost:8080/hello

 

728x90
반응형

댓글