์์ ์ ์๋ 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.gradle, Maven์ 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๋ฅผ ํตํด ํ๋ก์ ํธ ์ ์ฒด ์ด์ด์ฃผ๊ธฐ
์ด๋ ๊ฒ ํ๋ก์ ํธ๋ฅผ ์์ฑ ํ ์ด์ด์ ํ๋ก์ ๊ทธ ๊ฐ๋ฐ์ ํด์ฃผ๋ฉด ๋๋ค.
'๐ฉ๐ปโ๐ป Developer > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] ์คํ๋ง์ด ์ฃผ๊ธฐ์ ์ผ๋ก ์์กดํ๋ ๊ฒ์? (0) | 2024.03.23 |
---|---|
[Spring] ์คํ๋ง ๋ถํธ์์ auto-configuration์ ๋นํ์ฑํํ๋ ๋ฐฉ๋ฒ (0) | 2024.03.21 |
[Spring] traceld ์ spanld๋? (0) | 2024.03.20 |
[Spring] ์ด๋ ธํ ์ด์ ์ ์ฉ๋ (0) | 2024.03.19 |
[spring] Spring ๊ณผ Spring Boot ์ ์ฐจ์ด (0) | 2024.03.01 |
๋๊ธ