Spring

[Spring] 스프링 입문 (1) - 프로젝트 환경설정

Sue 2022. 2. 26. 00:01

프로젝트 생성

프로젝트를 생성하기에 앞서 먼저 Java 11버전과 IntelliJ와 같은 IDE가 설치되어 있어야 한다.

 

스프링 부트 스타터

  • 스프링 부트 스타터 사이트에서 Spring boot 기반으로 Spring 관련 프로젝트를 생성할 수 있다.
  • Spring으로 개발할 때 이것저것 복잡한 설정이 필요한데, Spring boot는 간편하게 설정하여 쉽게 프로젝트를 생성하도록 도와준다.
  • 임베디드 서버(내장된 서버 e.g. Tomcat)를 사용하여 독립적인 어플리케이션을 생성할 수 있다.

 

스프링 부트 스타터에 접속하면 이와 같은 화면이 뜬다. 현업에서는 Gradle을 더 많이 이용하기 때문에 Project는 Gradle로 설정하고, 언어와 버전 정보 등을 입력해준다. Project Metadata의 Group에는 보통 기업명 또는 도메인 명을 쓰고 Artifact는 빌드 결과물의 이름으로 프로젝트 이름을 쓴다.

 

다음으로는 사용할 라이브러리를 Dependency에서 추가해준다. 웹개발을 하기 위한 Spring Web과 템플릿 엔진인 Thymeleaf를 추가해주었다. 그러고나면 GENERATE 버튼을 클릭해서 프로젝트를 다운받을 수 있다.

 

프로젝트의 구성

인텔리제이에서 다운받은 프로젝트를 열어보면 다음과 같은 구조로 되어있다. 

  • .idea : 인텔리제이가 사용하는 설정파일
  • src>main>java : 실제 패키지와 소스파일 존재
  • src>main>resources : 자바 코드 파일을 제외한 나머지 파일(xml, properties, html 등) 존재
  • src>test : 테스트 코드와 관련된 소스파일 존재
  • build.gradle : 버전, 라이브러리 등을 설정할 수 있는 파일

 

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

group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'	// 자바 버전

repositories {
	mavenCentral()	// mavenCentral 사이트에서 라이브러리 다운로드
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
	useJUnitPlatform()
}

 

프로젝트 실행해보기

프로젝트가 잘 동작하는지 확인해보기 위해 src>main>java에서 HelloSpringApplication.java 파일의 main함수를 실행시켜본다.

main 함수 실행
웹 페이지 출력

 

위와 같은 메세지들이 콘솔에 출력되면서 어플리케이션이 실행되고, localhost:8080을 주소창에 입력하게 되면 다음과 같은 에러메세지가 출력되는 것으로 동작을 확인할 수 있다. 이때 어플리케이션을 중단하면 사이트에 연결되지 않는다.

 

​라이브러리 살펴보기

Gradle은 의존관계가 있는 라이브러리를 함께 다운로드한다. 

 

View 환경설정

welcome page 만들기

src>resources>static에 index.html 파일을 올려두면 Spring boot는 Welcome page 기능을 제공한다. (정적 페이지)

index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
</head>
<body>
Hello
<a href="/hello">hello</a>
</body>
</html>

 

파일을 올리고 다시 localhost:8080에 접속하면 에러 페이지가 아닌 작성한 html 페이지가 뜬다.

 

 

 

thymeleaf 템플릿 엔진

템플릿 엔진은 지정된 템플릿과 데이터를 합쳐 HTML 문서를 출력하는 소프트웨어를 말한다. 

 

src>main>java>hello.hellospring>controller>HelloController.java
package hello.hellospring.controller;

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

@Controller
public class HelloController {

    @GetMapping("hello")	// localhost:8080/hello
    public String hello(Model model) {
        model.addAttribute("data","hello!!");
        return "hello";
    }
}

 

src>main>resources>templates>hello.html
<!DOCTYPE html>
<html xmlns:th="http://www.tymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<p th:text="'안녕하세요.  '+ ${data}">안녕하세요 손님</p>
</body>
</html>

 

인프런 김영한님 스프링 입문 강의 자료

웹 브라우저에서 localhost:8080/hello가 들어오면 @GetMapping("hello") 어노테이션이 붙은 Controller의 hello() 메서드가 실행된다. 메서드가 실행되면 model의 addAttribute 메서드를 이용해 "data"를 key로 갖는 값을 "hello!!"이라는 value로 치환해준다. 이때 Controller의 메서드가 String값이 반환되면 viewResolver가 template 패키지에서 문자열과 같은 이름을 갖는 파일을 찾고 렌더링한다. 

 

 

빌드하고 실행하기

command 창을 열어 프로젝트 디렉토리로 이동한다. 윈도우 사용자는 gradlew.bat build를 입력하면 몇초 후 빌드에 성공했다는 메세지가 뜬다.

 

빌드가 성공적으로 수행되었으면 build>libs에 빌드된 jar 파일이 생성된다. command 창에 java -jar "파일이름"을 입력하여 실행

 

성공적으로 수행된다. 이때 main 함수를 실행했을 때와 마찬가지로 localhost:8080이 접속 가능한 상태가 된다. 실행을 종료하기 위해서는 ctrl+c를 입력해주면 된다.

 


강의 링크

 

[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

댓글수0