해당 글은 김영한님의 <스프링 입문> 강좌를 기반으로 작성되었습니다.
프로젝트 생성
- 준비물 : Java 11, IDE(인텔리제이 사용)
- https://start.spring.io/에 들어가서 의존성 설정
- Project : Gradle 선택(구글링 해봐도 메이븐보다 그레이들이 낫다고 한다)
- Springboot : 2.3.x
- Language : java
- Packaging : jar
- Java : 11
- groupId : hello
- artifact : hello-sing
- Dependancies : SpringWeb, TyhmeLeaf
- 위의 사항으로 설정하고 generate 선택하면 zip 파일이 생성됩니다.
- 이후 해당 파일 압축해제하고 inteliJ에서 프로젝트 open하면, 처음 build하면 시간이 좀 걸린 후, Application을 실행해서 whiteLabel 에러 페이지가 나오면 완성입니다.
- 그레이들은 아래 코드를 수행하면서, 서로 의존성을 가지는 모든 라이브러리들을 해당 프로젝트에 끌어옵니다.
plugins {
id 'org.springframework.boot' version '2.3.12.RELEASE'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
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') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
test {
useJUnitPlatform()
}
View 환경설정
Welcome Page 생성
- 경로 : resources/static/index.html
<!DOCTYPE HTML>
<html lang="ko">
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
Hello
<a href="/hello">hello</a>
</body>
</html>
Controller 생성하기
- 위의 그림의 디렉토리 구조처럼 아래의 helloController클래스를 생성한다.
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")
public String hello(Model model){
model.addAttribute("data","spring!");
return "hello";
}
}
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org" lang="ko">
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
</body>
</html>
- @GetMapping("hello") : get요청이 hello로 들어오면 hello메소드를 호출하여서 hello.html파일을 리턴하게하는 어노테이션이다.
- hello.html 파일의 경우 thymeLeaf를 사용해서 웹 페이지를 띄우고 있다.
- $data는 model의 data로 넘어가는 key값이고, “spring!” 이라는 value를 웹페이지에서 리턴한다.
스프링부트 동작 환경 그림
- Controller에서 리턴 값으로 문자를 반환하면, view-resolver 가 해당 문자열의 이름을 갖는 html파일을 찾아서 서버를 거쳐 브라우져에 띄운다.
- 스프링에서 view-resolver가 html을 찾는 기본 경로는 resources/templates이다.
- 그림을 보면 스프링 부트는 내장 톰캣 서버를 가지고 있기 때문에 따로 WAS가 필요하지 않고, JAR파일로 배포가 가능하다.
빌드하고 실행하기
- 8080 포트가 중복되는 에러가 발생하기 때문에 IDE에서 실행중인 프로젝트는 무조건 중단하고 진행해야 합니다.
- 터미널에서 현재위치를 해당 프로젝트가 있는 경로로 이동한다.
- 이후 , .
/gradlew build
cd bulid/libs
java -jar hello-spring-0.0.1-SNAPSHOT.jar
- 순으로 실행하면 아래 화면처럼 실행된다.