μœ„μ—μ„œ 기본적인 Maven Project 에 λŒ€ν•œ directory ꡬ성에 λŒ€ν•˜μ—¬ μ‚΄νŽ΄λ³΄μ•˜λ‹€. κ·ΈλŸ¬λ‚˜ 아직 ν™•μΈν•˜κ³  λ„˜μ–΄κ°€μ•Ό ν•  νŒŒμΌλ“€μ΄ λͺ‡κ°œ 더 μ‘΄μž¬ν•œλ‹€.

Maven Wrapper Files

mvnw 파일, 즉 Maven Wrapper λŠ” μžλ™μœΌλ‘œ μ˜¬λ°”λ₯Έ verison 의 Maven 을 μ‹€ν–‰ν•˜λ„λ‘ λ„μ™€μ£ΌλŠ” μ‹€ν–‰ νŒŒμΌμ΄λ‹€. Wrapper λΌλŠ” 이름을 κ°€μ§„λ§ŒνΌ, Maven 의 μ‹€ν–‰ 과정을 λŒ€μ‹  감싸고 μ²˜λ¦¬ν•˜λŠ” 역할을 ν•œλ‹€. κ°œλ°œμžκ°€ 직접 μžμ‹ μ˜ ν”„λ‘œμ νŠΈμ— μ ν•©ν•œ version 의 Maven 을 μ„ νƒν•˜μ—¬ μ„€μΉ˜ν•˜μ§€ μ•Šλ”λΌλ„ Maven Wrapper κ°€ 이 λ™μž‘μ„ μžλ™μœΌλ‘œ μ²˜λ¦¬ν•΄μ€€λ‹€. 즉, local ν™˜κ²½μ— Maven 이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ Wrapper κ°€ μ•Œμ•„μ„œ λ‹€μš΄λ‘œλ“œν•˜μ—¬ μ„€μΉ˜ν•œλ‹€.

directory λ₯Ό 보면 mvnw.sh 와 mvnw.cmd 두 개의 wrapper κ°€ μ‘΄μž¬ν•˜λŠ”λ°, ν•˜λ‚˜λŠ” Linux/Mac ν™˜κ²½μ—μ„œ μ‚¬μš©λ˜λŠ” shell script ν˜•μ‹μ˜ 파일이고, λ‹€λ₯Έ ν•˜λ‚˜λŠ” Windows ν™˜κ²½μ—μ„œ μ‹€ν–‰ν•  수 μžˆλŠ” νŒŒμΌμ΄λ‹€.

Application Properties

Spring Boot ν”„λ‘œμ νŠΈμ—μ„œ application.properties νŒŒμΌμ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ‹€μ–‘ν•œ 섀정을 κ΄€λ¦¬ν•œλ‹€. 이 νŒŒμΌμ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰ μ‹œ μžλ™μœΌλ‘œ λ‘œλ“œλ˜λ©°, Spring Initializr λ‘œλΆ€ν„° μžλ™μœΌλ‘œ μƒμ„±λœλ‹€.

ν•΄λ‹Ή νŒŒμΌμ—μ„œλŠ” Spring Boot 의 properties 뿐만이 μ•„λ‹ˆλΌ κ°œλ°œμžκ°€ 개인적으둜 μ‚¬μš©ν•  수 μžˆλŠ” properties 도 μΆ”κ°€ν•  수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄μ„œ,

# configure server port
server.port=8585
 
# configure my properties
coach.name=Arne Slot
team.name=Liverpool

κ³Ό 같이 μ‚¬μš©ν•  수 μžˆλŠ” 것이닀. custom properties 의 경우, Controller λ“±μ—μ„œ Injection 을 μ‚¬μš©ν•˜μ—¬ Java class 의 field 에 값을 ν• λ‹Ήν•  수 μžˆλ‹€. μ•„λž˜μ²˜λŸΌ 말이닀.

@RestController
public class SampleController {
	@Value("${coach.name}")
	private String coachName;
	
	@Value("${team.name}")
	private String teamName;
}
Static Content

λ‹€μŒμ€ static directory 에 λŒ€ν•œ 뢀뢄이닀. 이 μ˜μ—­μ—λŠ” static resources 듀이 μ €μž₯λ˜λŠ” 곳이닀. HTML, CSS, JavaScript λ“±μ˜ 파일과 이에 μ‚¬μš©λ˜λŠ” image νŒŒμΌλ“€μ΄ 여기에 μ†ν•œλ‹€. ν•΄λ‹Ή νŒŒμΌλ“€μ€ Spring Boot κ°€ μžλ™μœΌλ‘œ load ν•˜μ—¬ μ‚¬μš©ν•œλ‹€.

Templates

templates μ—μ„œλŠ” Thymeleaf, FreeMarker, Mustache λ“±μ˜ template engine λ“€κ³Ό ν•¨κ»˜ μ‚¬μš©λœλ‹€. 이λ₯Ό ν†΅ν•˜μ—¬ controller μ—μ„œ 전달받은 데이터λ₯Ό 기반으둜 dynamic ν•˜κ²Œ HTML νŽ˜μ΄μ§€λ₯Ό μƒμ„±ν•œλ‹€.

Unit Test

λ§ˆμ§€λ§‰μœΌλ‘œ Unit Test μ—μ„œ μ‚¬μš©λ˜λŠ” test directory 이닀. Spring Initializr λ₯Ό ν†΅ν•˜μ—¬ κΈ°λ³Έ Test class κ°€ ν•˜λ‚˜ λ§Œλ“€μ–΄μ Έ 있으며, κ°œλ°œμžκ°€ μ›ν•˜λŠ” unit tests λ₯Ό μΆ”κ°€ν•  수 μžˆλ‹€.