[spring boot] Spring Boot ์‹œ์ž‘ํ•˜๊ธฐ

     ์•ž์„œ ์ ์—ˆ๋˜ spring ๊ณผ spring boot ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์ ์–ด๋ณด๋ฉด์„œ Spring Boot ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค 

     

    [spring] Spring ๊ณผ Spring Boot ์˜ ์ฐจ์ด

    'Java'์˜ ๋Œ€ํ‘œ์ ์ธ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ(Framework)์ธ "spring"๊ณผ "spring boot" ๊ทธ๋ž˜์„œ ๊ทธ๊ฒŒ ๋ญ” ์ฐจ์ด์ธ๊ฑด๋ฐ? ์˜€๋˜ ์ดˆ๊ธฐ ๋‚ด ๊ถ๊ธˆ์ฆ์„ ์œ„ํ•ด ์ •๋ฆฌํ–ˆ๋˜ ๋‚ด์šฉ์ด๋‹ค. Spring spring(= spring framework) ์€ Java ๊ธฐ๋ฐ˜ ์• ํ”Œ

    nyung1127.tistory.com

    ๊ทธ๋ž˜์„œ Spring Boot๋Š” ์–ด๋–ป๊ฒŒ ์“ฐ๋Š”๊ฑด๋ฐ?  ํ•˜๋Š” ๋‹ค์Œ ๊ถ๊ธˆ์ฆ์„ ํ•ด๊ฒฐ โ˜€๏ธ

     


    Spring Initializr ์ ‘์†ํ•˜๊ธฐ 

    ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋Š” "์›น์‚ฌ์ดํŠธ"๋ฅผ ํ†ตํ•ด์„œ ๋งŒ๋“ค์ˆ˜ ์žˆ๋‹ค. 

     

    ์ฃผ๋กœ ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์€ ํ„ฐ๋ฏธ๋„์ด๋‚˜ IDE์˜ ๊ธฐ๋Šฅ์„ ์จ์„œ ๊ตฌ์„ฑ๋˜๋Š” ๋ฐ˜๋ฉด,

     ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์›น ์‚ฌ์ดํŠธ ์•ˆ์—์„œ ์‰ฝ๊ฒŒ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ , ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๋„ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

    ์ด๋ฏธ์ง€ ํด๋ฆญ์œผ๋กœ ์‚ฌ์ดํŠธ ๋“ค์–ด๊ฐ€๋ณด๊ธฐ!!


    ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ 

    ์•„๋ž˜ ์„ธ๊ฐ€์ง€ ๋ฒ„ํŠผ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ 

    1. GENERATE 

    2. EXPLORE

    3. SHARE 

    ๋ฒ„ํŠผ์ด๋‹ค

     

    ๋ง๊ทธ๋Œ€๋กœ, 

    Generate๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๊ณ ,

    Explore๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์ „ ํ”„๋กœ์ ํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜๋Š”์ง€ "๋ฏธ๋ฆฌ๋ณด๊ธฐ"์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋ฉฐ,

    Share๋Š” ๋งํฌ ๋ณต์‚ฌ๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ๊ณต์œ ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.


    ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋Š”๊ฑด๋ฐ:???

    ํ”„๋กœ์ ํŠธ ์„ค์ •ํ•˜๊ธฐ 

    ๋จผ์ €, Project๋Š” Gradle ๊ณผ Maven ๋‘ ์ข…๋ฅ˜๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค. 

    ์ด๊ฒƒ์€ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ๊ทธ๋žจ์˜ ์„ค์ • ๋ฐฉ์‹์ด๋‹ค. 

    ๊ทธ ์ค‘ Gradle์€ Groovy ๋˜๋Š” Kotlin์ด๋ผ๋Š” ์–ธ์–ด๋„ ์„ ํƒ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ์žˆ๋‹ค. 

     

    ์‰ฝ๊ฒŒ ๋งํ•ด 

    Gradle ์€ build.gradleMaven์€ pox.xml ์ด๋ผ๋Š” ์„ค์ • ํŒŒ์ผ์ด ์ƒ๊ฒจ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. 

    Maven์€ xml ํ˜•์‹์œผ๋กœ ํ”„๋กœ์ ํŠธ ์„ค์ • ํŒŒ์ผ์„ ๊ตฌ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์—, spring ์ดˆ๊ธฐ์— ์‚ฌ์šฉํ•œ ๋ฐฉ์‹์ด๋ผ 

    Gradle์„ ํ˜„์žฌ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์•Œ๋ฉด ๋œ๋‹ค.

    ๊ทธ๋ฆฌ๊ณ , ์–ธ์–ด๋Š” Gradle์€ ์• ์ดˆ์— Groovy๋ผ๋Š” ์–ธ์–ด ๊ธฐ๋ฐ˜์ด์ง€๋งŒ Kotlin ์–ธ์–ด๊ธฐ๋ฐ˜์ด ์ถ”๊ฐ€๋˜์–ด ์„ ํƒ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋ผ๊ณ  ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๋œ๋‹ค. 

     

    (((Groovy ์™€ Kotlin์˜ ์ฐจ์ด๋Š” ํ›„์— ๋˜ ์ž‘์„ฑ ํ›„ ์ฑ„์›Œ ๋†“์„์˜ˆ์ •)))

     

    ๊ทธ๋ ‡๋‹ค๋ฉด Java๋ฅผ ์ด์šฉํ•œ ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ

    ์€ Gradle-Groovy๋ฅผ ์„ ํƒํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

     Language๋Š” ์—ญ์‹œ Java ๋กœ ๋งŒ๋“ค๊ฑฐ๊ธฐ ๋•Œ๋ฌธ์— Java ์„ ํƒํ•ด์ฃผ๊ธฐ 

     

    ์ดํ›„, Spring Boot Version ์„ ํƒ์„ ํ•˜๋„๋ก ๋‚˜์˜ค๋Š”๋ฐ, 

    ๊ฐ JAVA ๋ฒ„์ „์— ๋งž์ถฐ Spring Boot ๋ฒ„์ „์„ ๊ณ ๋ฅด๋ฉด ๋˜๋Š”๋ฐ  ๋‚˜๋Š” ๋ณดํ†ต ์ž๋™ ์„ ํƒ๋˜์–ด์žˆ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ด๋‹ค. 

     

    spring boot์˜ 3๋ฒ„์ „์€ JAVA 17 ์ด์ƒ์ด์–ด์•ผ ํ•˜๋ฉฐ, ๋‚˜๋Š” Java 21c ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ํŽธ

    ๋‚˜์ค‘์— ๋ฒ„์ „ ๊ด€๋ จ ๊ธ€๋„ ๋‹ค๋ค„๋ณด๊ฒ ์Œ,,,(์š”๊ฑด ๋‚˜๋„ ๊ณต๋ถ€๋ฅผ ๋” ํ•ด์•ผ ํ•˜๋Š” ๋ถ„์•ผ๋ผ)

     


    ํ”„๋กœ์ ํŠธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„ค์ •

    ์ด์ œ ๋‹ค์Œ์œผ๋กœ๋Š” ํ”„๋กœ์ ํŠธ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. 

     

    1. Group 

    : ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง„ํ–‰ํ•˜๊ฒŒ๋  src ํด๋”์˜ ๊ตฌ์„ฑ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 

    .์„ ๊ธฐ์ค€์œผ๋กœ ๋ถ€๋ชจ ์ž์‹ ๊ด€๊ณ„๋กœ ์ƒ์„ฑ์ด ๋˜๋ฉฐ, ์ผ์ข…์˜ ๋„๋ฉ”์ธ ์ด๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค. 

    ์ฆ‰, naver ์‚ฌ์ดํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด com.naver ์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ƒ์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

     

    2. Artifact 

    : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ”๋กœ ์ƒ์œ„์— ์žˆ๋Š” ํด๋”๋ช…์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ป. 

    ์œ„์—์„œ ์„ค์ •ํ•ด์ฃผ์—ˆ๋˜ com.naver ๋ฐ‘์— news ํƒญ์„ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค ํ•˜๋ฉด 

    "news"๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

     

    ๋‚˜๋Š” ๋งŒ๋“ค๋• demo ๊ทธ๋Œ€๋กœ ๋งŒ๋“ค์–ด์„œ generate ํ•ด์ฃผ๊ณ  => ์ดํ›„ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ์‹œ ๋ฐ”๊ฟ”์ฃผ๋Š” ํŽธ์ด๋‹ค.

     

    3. Name 

    : Name์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค. 

    ์œ„์— Artifact์˜ ๋ฐ‘์— ์ƒ๊ธฐ๋Š” newsapplication.java๋กœ ์ƒ์„ฑ๋œ ๊ฒƒ์˜ ์ด๋ฆ„์„ ๋ฐ”๊ฟ€ ์ˆ˜์žˆ๋‹ค. 

    ์ฆ‰, Artifact์™€ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ Name์„ ํ†ตํ•ด ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•œ๊ฒƒ์ด๋‹ค. 

    -> ํ•˜์ง€๋งŒ ๋ณดํ†ต ๋‚˜๋Š” ๊ฐ™์€  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ช…์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ์„ค์ •ํ•˜๋Š” ํŽธ

     

    4. Description 

    : ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์„ค๋ช…์„ ์“ฐ๋Š” ๊ณณ์ด๋‹ค.

    Share์‹œ ๋” ์ถ”๊ฐ€์ ์ธ ์„ค๋ช…์„ ์‰ฝ๊ฒŒ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋”ฑํžˆ ๊ณ ๋ คํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ๋ถ€๋ถ„์ด๋‹ค. 

     

    5. Package name 

    Group ๊ณผ Artifact์˜ ๊ฐ’์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ ์ง€์ •๋˜๋Š” ํŒจํ‚ค์ง€ ๊ฒฝ๋กœ์ด๋‹ค. 

    ์šฐ๋ฆฌ๊ฐ€ ์œ„์—์„œ ์„ค์ •ํ•ด์ค€ Group ๊ณผ Artifact์˜ ์กฐํ•ฉ์œผ๋กœ ์ž๋™ ์„ค์ •๋˜๋Š” ๊ฒฝ๋กœ์ด๋ฏ€๋กœ ๋”ฐ๋กœ ์ง€์ •ํ•ด์ค„ ํ•„์š”๊ฐ€ ์—†๋‹ค. 

     

    6. Packaging 

    : ํ”„๋กœ๊ทธ๋žจ ๋ฐฐํฌ ํŒŒ์ผ ํ˜•์‹์„ ์„ ํƒํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. 

    Jarํ˜•์‹ ๊ณผ War ํ˜•์‹์œผ๋กœ ๋‚˜๋‰˜๋ฉฐ

    Jar๋Š” ๋ณดํ†ต ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ์‹œ ์‚ฌ์šฉํ•˜๊ณ , 

    War๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ์‹œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฉฐ,

    War๊ฐ€ Jar๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๋ฒ”์œ„๋ผ๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. 

     

    spring boot์—์„œ๋Š” ๋ณ„๋„์˜ ์›น ์„œ๋ฒ„๊ฐ€ ์—†์–ด๋„ spring boot ์ž์ฒด๊ฐ€ ์›น ์„œ๋ฒ„๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด, Jar ๋ฐฉ์‹์„ ๋” ๊ถŒ์žฅํ•œ๋‹ค. 

     

    7. Java

    : ๋ง ๊ทธ๋Œ€๋กœ ์ž๋ฐ” ๋ฒ„์ „์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž์‹ ์ด ์„ค์น˜ํ–ˆ๋˜ ์ž๋ฐ”์˜ ๋ฒ„์ „์„ ์„ ํƒํ•˜๋ฉด ๋œ๋‹ค. 

    ๋‚˜๋Š” 21 version์„ ์„ ํƒํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. 


     

    ๋ชจ๋“ˆ ์ถ”๊ฐ€ํ•˜๊ธฐ 

    ์ด์ œ ์ƒ์„ฑ ์ „ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„, Dependencies๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. 

    ADD Dependencies ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋‹ค์–‘ํ•œ ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. 

     

    ๊ธฐ๋ณธ์ ์œผ๋กœ Spring Web, Lombok, Thymeleaf๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋Š” ํŽธ์ด๋‹ค. 

     

    1. Spring Web : spring boot ํ”„๋กœ์ ํŠธ๋ฅผ ์›น ํ”„๋กœ์ ํŠธ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค. 

    2. Lombok : ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์ค„์ด๋Š”๋ฐ ๋„์›€์ด ๋˜๋Š” ์ž๋ฐ” ์–ด๋…ธํ…Œ์ด์…˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. 

    3. Thymeleaf : ์„œ๋ฒ„ ์ธก Java์šฉ ํ…œํ”Œ๋ฆฟ ์—”์ง„์œผ๋กœ HTML์„ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ‘œ์‹œํ•ด์ฃผ๊ณ  ์ •์  ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ํ…œํ”Œ๋ฆฟ์ด๋‹ค.

     


    ์ž, ์ด๋ ‡๊ฒŒ ๋ชจ๋“  ์„ค์ •์ด ์™„๋ฃŒ๋˜๋ฉด Generate ๋ฒ„ํŠผ์„ ํ†ตํ•ด ํŒŒ์ผ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. 

    zip ํŒŒ์ผ์„ ํ†ตํ•ด ๋งŒ๋“ค์–ด์ง€๋Š”๋ฐ, 

    ์ž์‹ ์ด ๋งŒ๋“ , ์‚ฌ์šฉํ•˜๋Š” ํด๋”์—์„œ ์••์ถ• ํ•ด์ œ ํ›„ Open Project ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

    ๋‚˜๋Š” IntelliJ ๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— IntelliJ ์—์„œ Open Project๋ฅผ ํ•ด์ค€๋‹ค.


    ํŒŒ์ผ ์‚ฌ์šฉํ•ด์„œ ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ 

     

    >> IntelliJ ๋ฅผ ์‹คํ–‰ํ•ด์„œ Open ๋ฒ„ํŠผ ํด๋ฆญ

    >> ํŒŒ์ผ ๊ฒฝ๋กœ(๋‚ด๊ฐ€ ์ €์žฅํ•œ ๊ฒฝ๋กœ) ๋ฅผ ์„ ํƒ ํ›„ ํŒŒ์ผ์˜ build.gradle ์„ ํƒํ•œ ํ›„ ๋ฐ‘์— Open ๋ฒ„ํŠผ ํด๋ฆญ

     

    >> Open as Project๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ ์ „์ฒด ์—ด์–ด์ฃผ๊ธฐ

     

    ์ด๋ ‡๊ฒŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑ ํ›„ ์—ด์–ด์„œ ํ”„๋กœ์ œ๊ทธ ๊ฐœ๋ฐœ์„ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

    ๋Œ“๊ธ€