W3D1- SpringBoot Part1 ๐Ÿ–

Sangwon Naยท2021๋…„ 8์›” 15์ผ
0
post-thumbnail

Build Tool ์„ ํƒ

  • Maven
  • Gradle

Build๋ž€?

  1. ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค์šด๋ฐ›๊ณ  classpath์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  2. ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  4. ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋ฅผ packaing ํ•ฉ๋‹ˆ๋‹ค -> jar / war / zip etc
  5. packing๋œ ํŒŒ์ผ์„ ์ฃผ๋กœ artifacts๋ผ๊ณ  ๋ถ€๋ฅด๊ณ , ์„œ๋ฒ„๋‚˜ ๋ ˆํผ์ง€ํ† ๋ฆฌ์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

Build Tool์€ ์ด๋Ÿฌํ•œ Task๋“ค์„ ์ž๋™ํ™”ํ•˜๊ฒŒ ํ•ด์ฃผ๊ณ  ๊ทธ๋Ÿฐ Task๋ฅผ ๊ธฐ์ˆ ํ• ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๊ธฐ์ˆ ๋œ ํŒŒ์ผ์„ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์–ด๋””์— ์–ด๋–ป๊ฒŒ ๊ธฐ์ˆ ํ•˜๋Š”์ง€๊ฐ€ ๊ฐ ๋„๊ตฌ๋ณ„๋กœ ๋‹ค๋ฅด๊ฒ ์ฃ ? Apache Maven์€ XML๋กœ ๊ธฐ์ˆ ํ•˜๊ณ  Gradle์€ Groovy๋‚˜ Kotlin์œผ๋กœ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.


Maven

  • Gradle์€ build.gradle, Maven์€ pom.xml์—์„œ ๊ด€๋ฆฌ

Maven์€ ์•ž์—์„œ ๋งํ•œ ๋นŒ๋“œ ๋„๊ตฌ๋กœ์จ ์ฃผ๋กœ์ž๋ฐ”๊ธฐ๋ฐ˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. XML๊ธฐ๋ฐ˜์œผ๋กœ ์„ค์ • ๋ชจ๋ธ์„ ์ œ๊ณตํ•˜๊ณ  pom.xml ํŒŒ์ผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด xml ํŒŒ์ผ๋งŒ ๋ณด๋ฉด ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š”๊ฑฐ์ฃ . ์ฆ‰, ๋ฌด์Šจ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋‚˜ (Dependency ๋“ค์ด ์กด์žฌํ•˜๊ณ ) ์–ด๋–ค ๋นŒ๋“œ ์ž‘์—…๋“ค์ด ์žˆ๋Š”์ง€๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋นŒ๋“œ ๋„๊ตฌ๋กœ์จ ์ฃผ๋กœ ์ž๋ฐ”๊ธฐ๋ฐ˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    XML๊ธฐ๋ฐ˜์œผ๋กœ ์„ค์ • ๋ชจ๋ธ์„ ์ œ๊ณตํ•˜๊ณ  pom.xml ํŒŒ์ผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    POM์€ project object model์˜ ์•ฝ์–ด์ž…๋‹ˆ๋‹ค.
    Maven ํ”„๋กœ์ ํŠธ๋Š” Project Object Model๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”, ์ด POM์„ pom.xml๋กœ ๊ธฐ์ˆ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์›น ๋ฌธ์„œ๋ฅผ htmlํŒŒ์ผ๋กœ ์ž‘์„ฑํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ Document Object Model์ธ DOM์„ ๋งŒ๋“œ๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ pom.xml์„ ์ž‘์„ฑํ•˜๋ฉด Maven์ด POM์„ ๋งŒ๋“ค๊ณ  ๊ทธ POM์— ์˜ํ•ด์„œ ํ”„๋กœ์ ํŠธ์˜ dependency๊ฐ€ ๋‹ค์šด๋ฐ›์•„์ง€๊ณ  ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์„ค์น˜๋˜๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  • Maven์€ archetypes๋ผ๋Š” ํ”„๋กœ์ ํŠธ ํ…œํ”Œ๋ฆฟ์„ ์ œ๊ณตํ•ด์„œ ๋งค๋ฒˆ ๊ฐ™์€ ์„ค์ •์„ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š๊ฒŒ ๋„์™€์ค๋‹ˆ๋‹ค.

  • ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ dependency ๋ฅผ ๊ด€๋ฆฌํ•ด์ค๋‹ˆ๋‹ค.

  • ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • dependency๋ฅผ ๋‹ค์šด๋ฐ›๋Š” Repository๊ฐ€ ๋กœ์ปฌ์ด ๋  ์ˆ˜๋„ ์žˆ๊ณ , Maven Central์™€ ๊ฐ™์€ ๊ณต๊ฐœ๋œ Repository๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. (nexus๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋น„๊ณต๊ฐœ(Private) ๋ ˆํผ์ง€ํ† ๋ฆฌ ์ƒ์„ฑ๊ฐ€๋Šฅ)

Maven Dependency Scope

<scope>
compile: <scope />๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •, ์ปดํŒŒ์ผ ์˜์กด์„ฑ์€ ํ”„๋กœ์ ํŠธ์˜ ์ปดํŒŒ์ผ, ํ…Œ์ŠคํŠธ, ์‹คํ–‰์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š” ํ•  ๋•Œ ์‚ฌ์šฉ
provided: JDK ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅด ์ œ๊ณต ํ•  ๋•Œ ์„ค์ •, ์ฆ‰ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฒฝ์šฐ, JSP์™€ Servlet API๋“ฑ์€ provided์˜ ์˜์กด์„ฑ์œผ๋กœ ์„ค์ •
runtime: ์ปดํŒŒ์ผ ์‹œ์—๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋‚˜, ์‹คํ–‰๊ณผ ํ…Œ์ŠคํŠธ ์‹œ์—๋Š” ํ•„์š”ํ•  ๋•Œ ์„ค์ •, ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๊ฐ€ JDBC ๋“œ๋ผ์ด๋ฒ„ 
system: provided์˜์กด์„ฑ๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ, ์‚ฌ์šฉ์ž๊ฐ€ jar ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ์ง€์ •ํ•œ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฆ„.
system์˜์กด์„ฑ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด <systemPath>..</systemPath> ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ jar ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž๋งˆ๋‹ค ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ jar ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ์ง€์ • ํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ
test: ์‹คํ–‰์—๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋‚˜, ํ…Œ์ŠคํŠธ ์ปดํŒŒ์ผ ๋ฐ ์‹คํ–‰ ์‹œ์— ํ•„์š”ํ•  ๋•Œ ์„ค์ •, ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ๋Š” easymock, junit ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 
</scope>

Gradle

Gradle์€ ๋˜ ๋‹ค๋ฅธ Build Tool๋กœ์„œ Groovy ๊ธฐ๋ฐ˜์œผ๋กœ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋„์™€์ค๋‹ˆ๋‹ค.
์ตœ๊ทผ์—๋Š” ์ฝ”ํ‹€๋ฆฐ๋„ ์ง€์›ํ•ด์„œ ์ฝ”ํ‹€๋ฆฐ ๊ธฐ๋ฐ˜์œผ๋กœ Build Script๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Spring๊ธฐ๋ฐ˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ

Installing the Spring Boot CLI on Windows

  1. ์‚ฌ์ „์ž‘์—…
    ์œˆ๋„์šฐ JDK ์„ค์น˜

  2. ๋‹ค์šด๋กœ๋“œ ๋ฐ ๋ฐฐ์น˜
    https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.installing.cli.manual-installation ํด๋ฆญํ•˜์—ฌ ๋‹ค์šด๋กœ๋“œ
    spring-2.5.0.zip ์••์ถ•ํ•ด์ œ
    spring-2.5.0 ํด๋”๋ฅผ C:\ ๋ฃจํŠธ๋กœ ์ด๋™

  3. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋“ฑ๋ก
    (์œˆ๋„์šฐ10) Win+X, Y --- ๊ณ ๊ธ‰ ์‹œ์Šคํ…œ ์„ค์ • ํด๋ฆญ
    ์‹œ์Šคํ…œ ์†์„ฑ --- ๊ณ ๊ธ‰ --- [ํ™˜๊ฒฝ ๋ณ€์ˆ˜(N)...]
    ํ™˜๊ฒฝ ๋ณ€์ˆ˜ --- ์‹œ์Šคํ…œ ๋ณ€์ˆ˜(S) --- [์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ(W)...]
    ์ƒˆ ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ --- ๋ณ€์ˆ˜ ์ด๋ฆ„(N): SPRING_HOME --- ๋ณ€์ˆ˜ ๊ฐ’(V): C:\spring-2.5.0 --- [ํ™•์ธ]
    ํ™˜๊ฒฝ ๋ณ€์ˆ˜ --- ์‹œ์Šคํ…œ ๋ณ€์ˆ˜(S) --- Path ์„ ํƒ --- [ํŽธ์ง‘(I)...] %SPRING_HOME%\bin ์ถ”๊ฐ€ --- [ํ™•์ธ]

spring init --build maven -j 16 -g org.prgrms -a kdt-spring-demo -n kdt-spring-demo -x kdt-spring-demo
-x ์••์ถ•ํ•ด์ œ 
-g ๊ทธ๋ฃนID
-a ํ”„๋กœ์ ํŠธ ๋ช…
-n name

spring initializr ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์‹œ ๋„์›€๋˜๋Š” ์‚ฌ์ดํŠธ
์œ„ ๋ช…๋ น์–ด๋กœ ๋งค๋ฒˆ ์ƒ์„ฑํ•˜๊ธฐ์—๋Š” ์ง๊ด€์ ์ด์ง€ ์•Š์•„, ์‚ฌ์ดํŠธ์—์„œ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ IntellJ๋กœ๋„ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

profile
๋‚˜์ƒ์›์˜ LOG

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