Spring ์ ๋ฌธ / 1. ํ๋ก์ ํธ ํ๊ฒฝ์ค์
by rlaehddnd04221-1. ํ๋ก์ ํธ ์์ฑ
1. ์ค๋น
- Java 11 ์ค์น
- IDE : IntelliJ or Eclipse ์ค์น
โ๏ธ ์ ๋ IntelliJ ํ์๊ณ์ ๋ฌด๋ฃ ๋ผ์ด์ผ์ค๋ฅผ ํตํด ์งํํ์์ต๋๋ค.
2. ์คํ๋ง ํ๋ก์ ํฐ ์์ฑ
- ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํ ํ GENERATE๋ฅผ ํ๋ค.
โ๏ธ์คํ๋ง ๋ถํธ 3.0 ์ด์ ๋ฒ์ ์ Java 17 ์ด์์ ์ฌ์ฉํด์ผ ํ๋ค.
โ๏ธ SNAPSHOT ๋ฒ์ ์ ๋ฏธ์ ์ ๋ฒ์ ์ด๋ฏ๋ก ๊ฐ๊ธ์ ์ ํํ์ง ์๋ ๊ฒ์ด ์ข๋ค.
โ๏ธ ๋ค์๊ณผ ๊ฐ์ด Dependencies์ Spring Web๊ณผ Thymeleaf๋ฅผ ์ถ๊ฐํ์ฌ ์ค๋ค.
3. ์์ฑ๋ ํ๋ก์ ํธ zipํ์ผ์ ์์ถ ํด์ ํ ๋ค, IntelliJ์์ Openํ๋ค.
4. build.gradle์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํด์ค๋ค.
โ๏ธGradle์ ์์กด๊ด๊ณ๊ฐ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํจ๊ป ๋ค์ด๋ก๋ ํ๋ค.
dependencies
- ์คํ๋ง ๋ถํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
1. spring-boot-starter-web
โ๏ธ spring-boot-starter-tomcat : ํฐ์บฃ (์น์๋ฒ)
โ๏ธ spring-webmvc : ์คํ๋ง ์น mvc
2. spring-boot-starter-thymeleaf : ํ์๋ฆฌํ ํ ํ๋ฆฟ ์์ง(View)
3. spring-boot-starter (๊ณตํต) : ์คํ๋ง ๋ถํธ + ์คํ๋ง ์ฝ์ด + ๋ก๊น
โ๏ธ spring-boot
โ๏ธ spring-core
โ๏ธ spring-boot-starter-logging
โ๏ธ logback, slf4j
- ํ ์คํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
1. spring-boot-starter-test
โ๏ธ junit : ํ ์คํธ ํ๋ ์์ํฌ
โ๏ธ mockito : ๋ชฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
โ๏ธ assertj : ํ ์คํธ ์ฝ๋๋ฅผ ์ข ๋ ํธํ๊ฒ ์์ฑํ๊ฒ ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
โ๏ธ spring-test : ์คํ๋ง ํตํฉ ํ ์คํธ ์ง์
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.7'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}
group = 'kdo6301'
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'}
}
tasks.named('test') {
useJUnitPlatform()
}
5. main method ์คํ
โ๏ธ๋ฉ์ธ ๋ฉ์๋ ์คํ์ ๋ค์๊ณผ ๊ฐ์ด Web server failed to start. Port 8080 was already in use ๋์ค๋ ๊ฒฝ์ฐ์ ๋ค์๊ณผ ๊ฐ์ด ํด๊ฒฐํ๋ค.
6. localhost:8080 ์ ์ ์ ๋ค์๊ณผ ๊ฐ์ด ๋จ๋ฉด ์ฑ๊ณต
7. IntelliJ Gradle ๋์ ์ ์๋ฐ ์ง์ ์คํ
์ต๊ทผ ์ธํ ๋ฆฌ์ ์ด ๋ฒ์ ์ gradle์ ํตํด์ ์คํํ๋ ๊ฒ์ด ๊ธฐ๋ณธ์ค์ ์ด๋, ์ด๋ ๊ฒ ํ๋ฉด ์คํ์๋๊ฐ ๋๋ฆฌ๋ค.
๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํ๋ฉด ์๋ฐ๋ก ๋ฐ๋ก ์คํํด์ ์คํ ์๋๊ฐ ๋ ๋น ๋ฅด๋ค.
1-2. View ํ๊ฒฝ์ค์
1. Welcome page ๋ง๋ค๊ธฐ
โ๏ธ ์คํ๋ง ๋ถํธ๊ฐ ์ ๊ณตํ๋ Welcome page ๊ธฐ๋ฅ
-> static/index.html์ ์ฌ๋ ค๋๋ฉด Welcome page ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
2. thymeleaf ํ ํ๋ฆฟ ์์ง์ฌ์ฉ
ํ๋ฉด์ ๋์ ์ผ๋ก ๋ง๋ค๋ ค๋ฉด ํ ํ๋ฆฟ ์์ง์ ์ฌ์ฉํด์ผ ํ๋ค.
๋ฏธ๋ฆฌ ์ ์๋ ํ ํ๋ฆฟ์ ๋ง๋ค๊ณ , ๋์ ์ผ๋ก html ํ์ด์ง๋ฅผ ๋ง๋ค์ด์ ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ๋ ๋ฐฉ์.
์์ฒญ์ด ์ฌ ๋๋ง๋ค ์๋ฒ์์ ์๋ก์ด html ํ์ด์ง๋ฅผ ๋ง๋ค์ด ์ฃผ๊ธฐ ๋๋ฌธ์ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง ๋ฐฉ์์ด๋ผ๊ณ ํ๊ธฐ๋ ํ๋ค.
- Controller ์์ฑ
main/java/user/controller/HelloController.java
6 line : Controller์๋ @Controller ์ด๋ ธํ ์ด์ ์ถ๊ฐํด์ผ ํ๋ค.
9 line : @GetMapping ์ด๋ ธํ ์ด์ -> hello์ ๋งคํ๋์ด localhost:8080/hello ์ ์ ์์ ์ฌ์ฉ๋๋ค.
12 line : model์ attributeName = "data"์ Value "hello" ์ถ๊ฐ
13 line : Controller์์ ๋ฆฌํด๊ฐ์ผ๋ก ๋ฌธ์๋ฅผ ๋ฐํํ๋ฉด viewResolver๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ViewName={hello}+'.html'์ ์ฐพ์์ ์ฒ๋ฆฌ.
์ฐธ๊ณ : spring-boot-devtools ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํ๋ฉด 'html'ํ์ผ์ ์ปดํ์ผ๋ง ํด์ฃผ๋ฉด ์๋ฒ ์ฌ์์ ์์ด viewํ์ผ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค.
build -> recompile
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello";
}
}
- html ์์ฑ
main/java/resources/templates/hello.html
8 line : HelloController์์ model์ ์ถ๊ฐํ attribute์ค data๊ฐ ๋งคํ๋๋ค.
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<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 ์ ์
๋์ ๊ทธ๋ฆผ
3. ํฐ๋ฏธ๋์์ ๋น๋ํ๊ณ ์คํํ๊ธฐ
0. cd spring0
1. ./gradlew build
2. cd build/libs
3. java -jar ~~~.jar
<์ฐธ๊ณ ์๋ฃ>
'๐ Backend' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring ์ ๋ฌธ / 6. DB ์ ๊ทผ ๊ธฐ์ (0) | 2023.01.19 |
---|---|
Spring ์ ๋ฌธ / 5. ํ์ ๊ด๋ฆฌ ์์ - ์น MVC ๊ฐ๋ฐ (1) | 2023.01.17 |
Spring ์ ๋ฌธ / 4. ์คํ๋ง ๋น๊ณผ ์์กด๊ด๊ณ (0) | 2023.01.17 |
Spring ์ ๋ฌธ / 3. ํ์ ๊ด๋ฆฌ ์์ - ๋ฐฑ์๋ ๊ฐ๋ฐ (0) | 2023.01.16 |
Spring ์ ๋ฌธ / 2. Spring Web ๊ฐ๋ฐ ๊ธฐ์ด (0) | 2023.01.12 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
Study Repository
rlaehddnd0422