Search

[springboot] μŠ€ν”„λ§ μž…λ¬Έ - 1. μŠ€ν”„λ§λΆ€νŠΈ ν”„λ‘œμ νŠΈ μ„ΈνŒ…

νƒ€μž…
μŠ€ν„°λ””
νƒœκ·Έ
springboot
μƒνƒœ
Published
생성일
2022/07/22 07:38
μ΅œμ’… νŽΈμ§‘ μΌμ‹œ
2023/02/27 03:14
μƒμœ„ ν•­λͺ©
1 more property

ν”„λ‘œμ νŠΈ 생성

spring initializer

β€’
μŠ€ν”„λ§λΆ€νŠΈ ν”„λ‘œμ νŠΈ 생성기 : https://start.spring.io/
β€’
Project
Gradle, Maven λŠ” ν•„μš”ν•œ 라이브러리λ₯Ό λ‹€μš΄λ‘œλ“œ λ°›κ³ , λΉŒλ“œ μ‹œμΌœμ£ΌλŠ” λΉŒλ“œ μžλ™ν™” νˆ΄μ΄λ‹€.
μš”μ¦˜μ€ Gradle 은 많이 μ“°λŠ” 좔세이닀.
β€’
Spring Boot
SNAPSHOT 버전 : λ§Œλ“€κ³  μžˆλŠ” 버전
κ΄„ν˜Έκ°€ μ—†λŠ” 버전 μ€‘μ—μ„œ μ΅œμ‹  버전을 μ„ νƒν•˜μž.
220717 κΈ°μ€€ Spring Boot 2.7.1 버전
β€’
Project Metadata
β—¦
Group : 보톡 νšŒμ‚¬λͺ…
β—¦
Artifact : ν”„λ‘œμ νŠΈ 이름
β—¦
Java : μžλ°” 버전 ( μ—¬κΈ°μ„œλŠ” 11 을 선택 )
β€’
Dependencies
: ν•„μš”ν•œ 라이브러리 μΆ”κ°€
μ„ΈνŒ…λœ ν”„λ‘œμ νŠΈλ₯Ό λ‹€μš΄λ‘œλ“œ ν›„, 압좕을 ν’€κ³  intellij μ—μ„œ build.gradle νŒŒμΌμ„ open ν•œλ‹€.
파일 β†’ ν”„λ‘œμ νŠΈ κ΅¬μ‘°μ—μ„œ java 11 μ„€μ • 확인

ν”„λ‘œμ νŠΈ ꡬ쑰

src 폴더 밑에 main κ³Ό test 폴더가 μžˆλ‹€.
main 폴더 밑에 μ£Όμš” λ‘œμ§μ„ μž‘μ„±ν•˜κ³ , test ν΄λ”μ—λŠ” ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό μž‘μ„±ν•œλ‹€.
build.gradle νŒŒμΌμ€ 라이브러리, λΉŒλ“œμ™€ κ΄€λ ¨λœ 섀정듀을 μž‘μ„±ν•œλ‹€.
μ‚¬μ΄λ“œλ°” μ„€μ •
μ‚¬μ΄λ“œλ°”μ—μ„œ ν†±λ‹ˆλ°”ν€΄ 클릭
β€’
ν•œ 번의 클릭으둜 파일 μ—΄κΈ° on
β€’
항상 μ—΄λ € μžˆλŠ” 파일 선택 on
β€’
트리 λͺ¨μ–‘ β†’ 쀑간 νŒ¨ν‚€μ§€ μ••μΆ• off
HelloSpringApplication.java 파일이 Spring boot λ₯Ό μ‹€ν–‰μ‹œν‚€λŠ” λ©”μ„œλ“œκ°€ μžˆλŠ” νŒŒμΌμ΄λ‹€.
main ν•¨μˆ˜λ₯Ό μ‹€ν–‰μ‹œν‚€λ©΄ spring boot κ°€ κ΅¬λ™λœλ‹€.
localhost:8080 에 듀어갔을 λ•Œ μ΄λŸ¬ν•œ error page κ°€ 뜨면 μ •μƒμ μœΌλ‘œ ν”„λ‘œμ νŠΈκ°€ μ„ΈνŒ…λœ 것이닀. ( 아무것도 μž‘μ„±ν•˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— error page κ°€ λœ¬λ‹€. )
λΉŒλ“œ 속도 κ°œμ„ 
ν™˜κ²½ μ„€μ • β†’ λΉŒλ“œ 도ꡬ β†’ Gradle β†’ λΉŒλ“œ 및 싀행을 Intellij IDEA 둜 λ³€κ²½
gradle 을 ν†΅ν•˜μ§€ μ•Šκ³  Intellij μžμ²΄μ—μ„œ java λ₯Ό μ‹€ν–‰μ‹œμΌœμ„œ spring boot λ₯Ό 더 빨리 μ‹€ν–‰μ‹œν‚€κ²Œλ” ν•˜λŠ” 섀정이닀.

라이브러리 μ‚΄νŽ΄λ³΄κΈ°

β€’
라이브러리 쒅속성 확인
β€’
thymeleaf λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ μ‚¬μš©ν•˜λŠ” λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ„ 확인할 수 μžˆλ‹€.
β€’
spring-boot-starter-web λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ μ‚¬μš©ν•˜λŠ” 라이브러리 쀑에 (*) ν‘œμ‹œ 된 것듀은 이미 λ‹€λ₯Έ κ³³μ—μ„œ μ‚¬μš©μ΄ 된 λΌμ΄λΈŒλŸ¬λ¦¬λΌλŠ” λœ»μ΄λ‹€.
cf) ν†°μΊ£ μ›Ήμ„œλ²„κ°€ λ‚΄μž₯된 것을 확인할 수 μžˆλ‹€. λ”°λΌμ„œ spring boot λ₯Ό μ‹€ν–‰ν•˜λ©΄ ν†°μΊ£ μ›Ήμ„œλ²„λ„ 같이 κ΅¬λ™λœλ‹€.
β—¦
logging κ΄€λ ¨ 라이브러리
β–ͺ
slf4j : logging μΈν„°νŽ˜μ΄μŠ€
β–ͺ
logback : slf4j κ΅¬ν˜„μ²΄
μŠ€ν”„λ§ λΆ€νŠΈ 라이브러리
β€’
spring-boot-starter-web
β—¦
spring-boot-starter-tomcat: ν†°μΊ£ (μ›Ήμ„œλ²„)
β—¦
spring-webmvc: μŠ€ν”„λ§ μ›Ή MVC
β€’
spring-boot-starter-thymeleaf: νƒ€μž„λ¦¬ν”„ ν…œν”Œλ¦Ώ 엔진(View)
β€’
spring-boot-starter(곡톡): μŠ€ν”„λ§ λΆ€νŠΈ + μŠ€ν”„λ§ μ½”μ–΄ + λ‘œκΉ…
β€’
spring-boot
β—¦
spring-core
β€’
spring-boot-starter-logging
β—¦
logback, slf4j
ν…ŒμŠ€νŠΈ 라이브러리
β€’
spring-boot-starter-test
β—¦
junit: ν…ŒμŠ€νŠΈ ν”„λ ˆμž„μ›Œν¬
β—¦
mockito: λͺ© 라이브러리
β—¦
assertj: ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό μ’€ 더 νŽΈν•˜κ²Œ μž‘μ„±ν•˜κ²Œ λ„μ™€μ£ΌλŠ” 라이브러리
β—¦
spring-test: μŠ€ν”„λ§ 톡합 ν…ŒμŠ€νŠΈ 지원

View ν™˜κ²½μ„€μ •

μŠ€ν”„λ§ 곡식 λ¬Έμ„œ

정적 νŽ˜μ΄μ§€

resources/static/index.html 은 루트둜 듀어왔을 λ•Œ μ •μ μœΌλ‘œ λ Œλ”λ§μ΄ λ˜λŠ” νŽ˜μ΄μ§€μ΄λ‹€.

Thymeleaf ν…œν”Œλ¦Ώ 엔진

HelloController.java
@Controller public class HelloController { @GetMapping("hello") // GET /hello μš”μ²­μ„ 의미 public String hello(Model model){ model.addAttribute("data", "hello!!"); return "hello"; // templates/hello.html 을 의미 } }
Java
볡사
Β hello 에 get μš”μ²­μ΄ λ“€μ–΄μ˜€λ©΄, data 에 hello!! λ¬Έμžμ—΄μ„ λ§€ν•‘μ‹œμΌœμ€€λ‹€.
 컨트둀러의 리턴 값은 파일 μ΄λ¦„μœΌλ‘œ view Resolover κ°€ μ•Œλ§žμ€ view λ₯Ό μ²˜λ¦¬ν•΄μ€€λ‹€.
templates/hello.html
<!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>
HTML
볡사
Β ${data} μ—λŠ” μ»¨νŠΈλ‘€λŸ¬μ— μ˜ν•΄ hello!! κ°€ 맀핑이 될 것이닀.
κ²°κ³Ό
Github

λΉŒλ“œ, μ‹€ν–‰

ν„°λ―Έλ„μ—μ„œ 직접 λͺ…λ Ήμ–΄λ‘œ λΉŒλ“œλ₯Ό ν•΄μ„œ jar νŒŒμΌμ„ λ§Œλ“€κ³ , jar νŒŒμΌμ„ μ‹€ν–‰ν•˜λŠ” 방식을 μ•Œμ•„λ³΄μž.
κΈ°μ‘΄ intellij μ—μ„œ 싀행을 ν–ˆλ˜ 것을 ν„°λ―Έλ„μ—μ„œ ν•˜λŠ” 것이라고 보면 λœλ‹€.
ν”„λ‘œμ νŠΈ λ£¨νŠΈμ—μ„œ
./gradlew clean build
Bash
볡사
clean μ˜΅μ…˜μ„ μ£Όλ©΄ κΈ°μ‘΄ build 폴더λ₯Ό 날리고 μƒˆλ‘­κ²Œ build 폴더λ₯Ό λ§Œλ“ λ‹€.
build 폴더가 λ§Œλ“€μ–΄μ§€κ³  libs 폴더에 jar 파일이 생겼닀.
build/libs 둜 μ΄λ™ν•΄μ„œ jar νŒŒμΌμ„ μ‹€ν–‰ν•œλ‹€.
java -jar hello-spring-0.0.1-SNAPSHOT.jar
Bash
볡사
배포 μ‹œμ—λŠ” 이 jar νŒŒμΌμ„ λ°°ν¬μ„œλ²„μ—μ„œ μ‹€ν–‰μ‹œν‚€λ©΄ λœλ‹€.