[Spring] Spring ๊ฐœ๋…๊ณผ Initializr

์‹œ๋‚ดยท2024๋…„ 1์›” 14์ผ

Spring

๋ชฉ๋ก ๋ณด๊ธฐ
1/10

๐ŸฑSpring

Java ๊ธฐ๋ฐ˜์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ํ”„๋ ˆ์ž„์›Œํฌ

๐Ÿถ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  1. DB ์—ฐ๊ฒฐ
    - DB ์กฐํšŒ ๊ธฐ์ˆ  : jdbc โ†’ ibatis/mybatis โ†’ JPA(orm)
  2. ๋กœ๊ทธ์ธ ๋ฐ ๋‹ค์–‘ํ•œ ์›น ๊ธฐ์ˆ  ๋ณด์œ  (๊ตฌํ˜„์ฒด)
  3. REST API ๊ฐœ๋ฐœ ๋“ฑ์˜ ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ
    - HTTP ํ†ต์‹  (req, res) โ†’ ํ”„๋กœํ† ์ฝœ ํŽธ์˜๊ฐ€ ์‚ฌ์ „ ๊ตฌํ˜„๋˜์–ด ์žˆ์Œ

โœจ๋งŽ์€ ๋ถ€๋ถ„์„ ์‚ฌ์ „์— ๊ตฌํ˜„/๋‹จ์ˆœํ™”๋ฅผ ํ†ตํ•œ ์›น๊ฐœ๋ฐœ ํŽธ์˜ ์ฆ๋Œ€

๐ŸฑSpring Boot

  • Spring ๊ธฐ๋ฐ˜์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋„๊ตฌ
  • Spring ์„ค์ •์„ ์ตœ์†Œํ™” -> ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž๋™ ๊ตฌ์„ฑ
    - Auto-configuration, Starter ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (์ข…์†์„ฑ), ํ†ฐ์บฃ์ง€์›
  • ์ตœ์‹  ํ”„๋กœ์ ํŠธ๋Š” ๋Œ€๋ถ€๋ถ„ SpringBoot ๊ธฐ๋ฐ˜
    cf) Spring์€ tomcat ๋ณ„๋„ ์„ค์น˜ ํ•„์š” vs Spring Boot๋Š” tomcat์ด ๋‚ด์žฅ๋จ

๐ŸฑSpring ์‹œ์ž‘ํ•˜๊ธฐ

Spring framework์™€ Spring Boot ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ณต์‹์ ์ธ ์›น ์„œ๋น„์Šค : https://start.spring.io/

์‹ค์Šต ex)

๐ŸถGradle - Groovy

๐ŸฆดGradle

  • ํ”„๋กœ์ ํŠธ build, dependencies (์ข…์†์„ฑ) ๊ด€๋ฆฌ, ๋ฐฐํฌ ๋“ฑ์„ ์œ„ํ•œ ์ž๋™ํ™” ๋„๊ตฌ
    • Java ๋นŒ๋“œ์— ํ•„์š”ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •
      ex)build.gradle์˜ plugins ์ฝ”๋“œ

    • ์™ธ๋ถ€๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ๋ชจ๋“ˆ ๋“ฑ์˜ ๊ด€๋ฆฌ => ์˜์กด์„ฑ (์ข…์†์„ฑ) ๊ด€๋ฆฌ
      ex)build.gradle์˜ dependencies

    • ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์••์ถ•ํŒŒ์ผ ์ƒ์„ฑ
      ex).jar ํŒŒ์ผ

๐ŸฆดGroovy

  • build script๋ฅผ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด
    ex) build.gradle ํŒŒ์ผ ์ž‘์„ฑ์˜ ๋ฌธ๋ฒ• ํ˜•์‹
  • XML์ด๋‚˜ ํŠน์ˆ˜ํ•œ DSL(Domain Specific Language)์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

๐ŸถSpring Boot

  • 2.7.11 ์„ ํƒ
  • snapshot์€ ์‹คํ—˜์ ์ธ ๋ฒ„์ „์„ ์˜๋ฏธ
  • ํ•„์ž๋Š” ์•ž์œผ๋กœ ์ง„ํ–‰๋  ํ”„๋กœ์ ํŠธ์—์„œ๋Š” 2.7.* ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ์˜ˆ์ •
    (๋ณธ์ธ์ด ์‚ฌ์šฉํ•œ ๋ฒ„์ „ ๊ธฐ์–ตํ•ด๋‘๊ธฐ)

๐ŸถProject Metadata

๐ŸฆดGroup

  • ๊ทธ๋ฃน/์กฐ์ง ๋‚˜ํƒ€๋‚ด๋Š” ์ด๋ฆ„
  • ์ผ๋ฐ˜์ ์œผ๋กœ ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ์—ญ์ˆœ์œผ๋กœ ์‚ฌ์šฉ
    ex) com.naver

๐ŸฆดArtifact

  • ํ”„๋กœ์ ํŠธ์˜ ์‹ค์งˆ์ ์ธ name์œผ๋กœ ์‚ฌ์šฉ
    ex) first-web app
  • ๊ทธ๋ฃน ๋‚ด์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
  • ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑํ•˜๋Š” .jar ํŒŒ์ผ์˜ ์ด๋ฆ„์— ์‚ฌ์šฉ

๐ŸฆดName

  • ํ”„๋กœ์ ํŠธ์˜ ์ „์ฒด ์ด๋ฆ„
  • artifact๋ณด๋‹ค ๋” ์„ค๋ช…์ ์ด๊ณ  ์นœ์ˆ™ํ•œ ํ˜•ํƒœ๋กœ ํ‘œํ˜„
  • ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑํ•˜๋Š” main application ํŒŒ์ผ์˜ ์ด๋ฆ„์— ์‚ฌ์šฉ

๐ŸฆดPackaging

Java ์••์ถ•ํŒŒ์ผ์˜ ๋А๋‚Œ
(ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์„ ์œ„ํ•œ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํฌํ•จ)

- Jar

  • ์ฃผ๋กœ Spring Boot์—์„œ ์‚ฌ์šฉ

- War

  • Servlet/JSP ๊ธฐ๋ฐ˜์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‚ฌ์šฉ
    cf) JSP๋Š” HTML ๋ฌธ์„œ ์•ˆ์— Java ์ฝ”๋“œ๋ฅผ ํฌํ•จ
    Servlet์€ Java ์ฝ”๋“œ ์•ˆ์— HTML์„ ํฌํ•จ

  • JSP์—์„œ๋Š” WEB-INF, META-INF์™€ ๊ฐ™์€ ์‚ฌ์ „์— ์ •์˜๋œ ๊ตฌ์กฐ ์‚ฌ์šฉ

  • ๋ณ„๋„์˜ ์›น ์„œ๋ฒ„(WEB)/์›น ์ปจํ…Œ์ด๋„ˆ(WAS) ํ•„์š”

๐ŸถDependencies

aka ์ข…์†์„ฑ / ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • ์‚ฌ์šฉํ•  ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชฉ๋ก ์ •์˜
    ex) Spring Web : ์›น ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ์ด ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    ex) Thymeleaf : Spring์—์„œ Java ์ฝ”๋“œ ์•ˆ์— HTML์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ํ…œํ”Œ๋ฆฟ ์—”์ง„

    cf) ์ฐธ์กฐ

๐ŸถGenerate

  • .zip ํ˜•ํƒœ๋กœ ๋‹ค์šด๋กœ๋“œ๋จ
  • ์••์ถ•ํ•ด์ œ ํ›„, Intellij์—์„œ build.gradle ํŒŒ์ผ ์—ด๊ธฐ
  • ํŒŒ์ผ ์ตœ์ดˆ ์‹คํ–‰ ์‹œ, build.gradle์— ์„ค์ •๋œ dependencies ๊ด€๋ จ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ฒŒ ๋จ

profile
contact ๐Ÿ“จ ksw08215@gmail.com

0๊ฐœ์˜ ๋Œ“๊ธ€