๊ด€๋ฆฌ ๋ฉ”๋‰ด

ruriruriya

[Spring Boot] ์Šคํ”„๋ง๋ถ€ํŠธ Gradle๋ž€?(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ) ๋ณธ๋ฌธ

๐Ÿ–Œ๏ธWeb/Spring Boot

[Spring Boot] ์Šคํ”„๋ง๋ถ€ํŠธ Gradle๋ž€?(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ)

๋ฃจ๋ฆฌ์•ผใ…‘ 2024. 3. 5. 16:31
๋ฐ˜์‘ํ˜•

Gradle์„ ์‚ฌ์šฉํ•˜๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” build.gradle ๋˜๋Š” build.gradle.kts ํŒŒ์ผ์— ์˜์กด๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•œ๋‹ค.
์ด ํŒŒ์ผ์—์„œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง€์ •ํ•˜๋ฉด Gradle์ด ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ํ”„๋กœ์ ํŠธ์— ํ†ตํ•ฉํ•œ๋‹ค.

์ง€๋‚œ ๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ์Šคํ”„๋ง๋ถ€ํŠธ ์Šคํƒ€ํ„ฐ๋กœ ์„ค์ •ํ•  ๋•Œ add dependencies์—์„œ
Spring Web๊ณผ  Thymeleat ๋‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ์„ ํƒํ•˜์—ฌ ์„ค์น˜ํ–ˆ์ง€๋งŒ
์ด ๋‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•จ๊ณผ ๋™์‹œ์— ์—ฐ๊ด€์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊นŒ์ง€ ์ž๋™์œผ๋กœ ๊ฐ™์ด ์„ค์น˜๋˜๋Š” ๊ฒƒ์ด๋‹ค.

https://ruriruriya.tistory.com/202

 

[Spring Boot]์ž๋ฐ” ์Šคํ”„๋ง๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ ์„ค์ •(์ŠคํŠธ๋ง ๋ถ€ํŠธ ์Šคํƒ€ํ„ฐ)

์ž๋ฐ” ์Šคํ”„๋ง(Spring)์€ ์ž๋ฐ” ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ ์†Œ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. ์ฃผ๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ๋Œ€๊ทœ๋ชจ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์Šคํ”„๋ง์€ ์• ํ”Œ๋ฆฌ์ผ€์ด

ruriruriya.tistory.com

 

์Šคํ”„๋ง ๋ถ€ํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • 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-strater-test
    • junit: ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ
    • mockito : ๋ชฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    • asserj: ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ข€ ๋” ํŽธํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๊ฒŒ ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    • spring-test: ์Šคํ”„๋ง ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ง€์›

 

* ์ถœ์ฒ˜ : https://youtu.be/ymmGSVUwTDM?si=ZNHluCt6fvrYwoM5 ๊น€์˜ํ•œ๋‹˜์˜ ์Šคํ”„๋ง ๊ฐ•์˜

 

์˜์กด๊ด€๊ณ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ž€?

์˜์กด๊ด€๊ณ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์™ธ๋ถ€ ์ฝ”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๋Š” JPA ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ JSON ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” Jackson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ˆ๋“ค(Gradle)์ด๋ž€?

๊ทธ๋ ˆ๋“ค์€ ํ”„๋กœ์ ํŠธ์˜ ๋นŒ๋“œ์™€ ์˜์กด์„ฑ ๊ด€๋ฆฌ๋ฅผ ์ž๋™ํ™”ํ•ด์ฃผ๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋นŒ๋“œ ๋„๊ตฌ์ด๋‹ค. Java, Kotlin, Groovy ๋“ฑ ๋‹ค์–‘ํ•œ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง€์›ํ•œ๋‹ค.

๊ทธ๋ ˆ๋“ค์—์„œ ์˜์กด๊ด€๊ณ„ ์„ค์ •ํ•˜๊ธฐ

๊ทธ๋ ˆ๋“ค์„ ์‚ฌ์šฉํ•˜๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” build.gradle ๋˜๋Š” build.gradle.kts ํŒŒ์ผ์— ์˜์กด๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•œ๋‹ค. ์ด ํŒŒ์ผ์—์„œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง€์ •ํ•˜๋ฉด ๊ทธ๋ ˆ๋“ค์ด ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ํ”„๋กœ์ ํŠธ์— ํ†ตํ•ฉํ•œ๋‹ค.

dependencies {
    implementation '๊ทธ๋ฃน ID:์•„ํ‹ฐํŒฉํŠธ ID:๋ฒ„์ „'
    testImplementation '๊ทธ๋ฃน ID:์•„ํ‹ฐํŒฉํŠธ ID:๋ฒ„์ „'
}
  • implementation: ํ”„๋กœ์ ํŠธ์˜ ์ฃผ์š” ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง€์ •ํ•œ๋‹ค.
  • testImplementation: ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์‹คํ–‰ ์‹œ์—๋งŒ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง€์ •ํ•œ๋‹ค.

์˜ˆ์‹œ

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
  • ์—ฌ๊ธฐ์„œ spring-boot-starter-web์€ ์Šคํ”„๋ง ๋ถ€ํŠธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ์˜์กด์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.
  • spring-boot-starter-test๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์˜์กด์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.

 

์˜์กด์„ฑ ๊ด€๋ฆฌ์˜ ์žฅ์ 

  • ์ž๋™ํ™”: ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ทธ ์˜์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œ
  • ๋ฒ„์ „ ๊ด€๋ฆฌ: ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฒ„์ „์„ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ.
  • ์ถฉ๋Œ ๋ฐฉ์ง€: ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „ ๊ฐ„์˜ ์ถฉ๋Œ์„ ๋ฐฉ์ง€

 

์Šคํ”„๋ง ๋ถ€ํŠธ์™€ ๊ทธ๋ ˆ๋“ค์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ,
build.gradle ํŒŒ์ผ์„ ํ†ตํ•ด ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.
์ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ์˜ ๋นŒ๋“œ ๊ณผ์ •์„ ์ž๋™ํ™”ํ•˜๊ณ , ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
์ดˆ๋ณด์ž๋„ ๋‹จ๊ณ„๋ณ„๋กœ ๋”ฐ๋ผ๊ฐ€๋ฉฐ ์‹ค์Šตํ•ด๋ณด๋ฉด, ์ ์ฐจ ์ต์ˆ™ํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜์‘ํ˜•