SpringBoot

0taetaeยท2024๋…„ 10์›” 31์ผ
0
post-thumbnail

๐Ÿ“™ Spring Boot

Java ๊ธฐ๋ฐ˜์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ๊ฐ„์†Œํ™”ํ•˜๊ณ  ๊ฐ€์†ํ™”ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ

๐Ÿ’ก Spring Boot์˜ ํŠน์ง•

  • legacy Spring
    • Application์„ ๊ฐœ๋ฐœํ•˜๋ ค๋ฉด ์‚ฌ์ „์— ๋งŽ์€ ์ž‘์—…์„ ํ•ด์•ผ ํ–ˆ๋‹ค.
    • library ์ถ”๊ฐ€(pom.xml), dependency ์„ค์ •(DI), SpringFramework๊ฐ€ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ตฌ์„ฑ ๋ฐ ์„ค์ • ํŒŒ์ผ ๋“ฑ
  • SpringBoot์˜ ์žฅ์ 
    • project์— ๋”ฐ๋ผ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” library๋“ค์ด ๋ฏธ๋ฆฌ ์กฐํ•ฉ๋˜์–ด ์žˆ์Œ (starter ์˜์กด์„ฑ ์ œ๊ณต)
    • ๋ณต์žกํ•œ ์„ค์ •์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ
      • component scan ๋“ฑ
    • ์›น ์„œ๋ฒ„์— ๋…๋ฆฝ์ ์ธ Spring Application ๊ตฌ์ถ• ๊ฐ€๋Šฅ
    • Tomcat, Jetty์™€ ๊ฐ™์€ WAS๋ฅผ ์ถ”๊ฐ€๋กœ ์„ค์น˜ํ•˜์ง€ ์•Š์•„๋„ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅํ•˜๋‹ค. (๋‚ด์žฅ ์„œ๋ฒ„)
    • WAS์— ๋ฐฐํฌํ•˜์ง€ ์•Š๊ณ ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” JAR ํŒŒ์ผ๋กœ Web Application์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ก spring boot starter

  • ์˜์กด์„ฑ์ด ๋ชจ์—ฌ ์žˆ๋Š” ๊ทธ๋ฃน
  • ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์„ค์ •
  • naming convention : โ€œspring-boot-starter-{์ž‘์—…์œ ํ˜•}โ€
  • ๋Œ€ํ‘œ์ ์ธ spring boot starter
    • spring-boot-starter-web : Spring MVC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ web service๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ํ•„์š”ํ•œ ์˜์กด์„ฑ ๋ชจ์Œ
    • spring-boot-starter-test : Spring Boot Application์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์˜์กด์„ฑ ๋ชจ์Œ
    • spring-boot-starter-validation : validation check๋ฅผ ์œ„ํ•ด ํ•„์š”ํ•œ ์˜์กด์„ฑ ๋ชจ์Œ
    • spring-boot-starter-actuator : monitoring์„ ์œ„ํ•ด application์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ•˜๋Š” ์˜์กด์„ฑ ๋ชจ์Œ
    • spring-boot-starter-data-jpa : ORM Interface์˜ ๋ชจ์Œ์ธ JPA๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์˜์กด์„ฑ ๋ชจ์Œ

๐Ÿ’ก Spring Boot Project ์ฃผ์š” ํŒŒ์ผ

  • src/main/java
    • java source directory
  • SpringBootApplication.java
    • application์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” main method๊ฐ€ ์กด์žฌํ•˜๋Š” ์Šคํ”„๋ง ๊ตฌ์„ฑ ๋ฉ”์ธ ํด๋ž˜์Šค
  • static
    • css, js, img ๋“ฑ์˜ ์ •์  resource directory
  • templates
    • SpringBoot์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ View Template(Thymeleaf, Velocity, FreeMarker ๋“ฑ) ์œ„์น˜
  • application.properties
    • application ๋ฐ ์Šคํ”„๋ง์˜ ์„ค์ • ๋“ฑ์—์„œ ์‚ฌ์šฉํ•  ์—ฌ๋Ÿฌ ๊ฐ€์ง€ property๋ฅผ ์ •์˜ํ•œ file
  • src/main/webapp
    • jsp ๋“ฑ์˜ ๋ฆฌ์†Œ์Šค directory

๐Ÿ’ก@SpringBootApplication Annotation

  • @ SpringBootConfiguration
    • SpringBoot ๊ด€๋ จ ์„ค์ •
  • @ EnableAutoconfiguration
    • SpringBoot์—์„œ ์ž๋™ ๊ตฌ์„ฑ์„ ํ™œ์„ฑํ™”ํ•˜๋Š” Annotation
    • ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰๋  ๋•Œ SpringBoot์˜ ๋ฉ”ํƒ€ ํŒŒ์ผ์„ ์ฝ๊ณ  ์ •์˜๋œ ์„ค์ •๋“ค์„ ์ž๋™์œผ๋กœ ๊ตฌ์„ฑ
  • @ ComponentScan
    • ์‚ฌ์šฉ์ž๊ฐ€ ๋“ฑ๋กํ•œ ๋นˆ์„ ์ฝ๊ณ  ๋“ฑ๋ก
    • @ Configuration, @ Controller, @ RestController, @ Service, @ Repository๊ฐ€ ์„ ์–ธ๋œ class

๐Ÿ“™ Swagger

  • FrontEnd ๊ฐœ๋ฐœ์ž์˜ ๊ฒฝ์šฐ ํ™”๋ฉด๊ณผ ๋กœ์ง์— ์ง‘์ค‘์„ ํ•˜๊ณ  BackEnd ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“  ๋ฌธ์„œ API๋ฅผ ๋ณด๋ฉฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ฒŒ ๋จ
    โ†’ ๊ฐœ๋ฐœ ์ƒํ™ฉ์˜ ๋ณ€ํ™”์— ๋”ฐ๋ฅธ API์˜ ์ถ”๊ฐ€ ๋˜๋Š” ๋ณ€๊ฒฝํ•  ๋•Œ๋งˆ๋‹ค ๋ฌธ์„œ์— ์ ์šฉํ•˜๋Š” ๋ถˆํŽธํ•จ ๋ฐœ์ƒ
    โ‡’ Swagger ์‚ฌ์šฉ

๐Ÿ’ก Swagger

๊ฐ„๋‹จํ•œ ์„ค์ •์œผ๋กœ ํ”„๋กœ์ ํŠธ์˜ API ๋ชฉ๋ก์„ ์›น์—์„œ ํ™•์ธ ๋ฐ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” Library

  • Swagger๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Controller์— ์ •์˜๋˜์–ด ์žˆ๋Š” ๋ชจ๋“  URL์„ ๋ฐ”๋กœ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • API ๋ชฉ๋ก ๋ฟ ์•„๋‹ˆ๋ผ API์˜ ๋ช…์„ธ ๋ฐ ์„ค๋ช…๋„ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, API๋ฅผ ์ง์ ‘ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ’ก๊ด€๋ จ ์–ด๋…ธํ…Œ์ด์…˜

  • @Tag
    • API ์—”๋“œํฌ์ธํŠธ๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๊ณ  ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ํ˜•์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
    • ์ฃผ๋กœ @RestController ํด๋ž˜์Šค์— ์ ์šฉ
    • name๊ณผ description ์†์„ฑ์„ ํ†ตํ•ด API ๊ทธ๋ฃน์˜ ์ด๋ฆ„๊ณผ ์„ค๋ช…์„ ์ •์˜
  • @Operation
    • ๊ฐœ๋ณ„ API ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•œ ์ƒ์„ธ ์ •๋ณด๋ฅผ ์ œ๊ณต
    • Controller ๋ฉ”์„œ๋“œ์— ์‚ฌ์šฉ
    • summary์™€ description ์†์„ฑ์„ ํ†ตํ•ด API์˜ ๊ฐ„๋žตํ•œ ์„ค๋ช…๊ณผ ์ƒ์„ธ ์„ค๋ช…์„ ์ œ๊ณต
  • @Schema
    • API ์š”์ฒญ/์‘๋‹ต ๋ชจ๋ธ์˜ ์ƒ์„ธ ์ •๋ณด๋ฅผ ์ •์˜
    • DTO ํด๋ž˜์Šค๋‚˜ ํ•„๋“œ์— ์‚ฌ์šฉ
    • description, example, allowableValues ๋“ฑ์˜ ์†์„ฑ์„ ํ†ตํ•ด ๋ชจ๋ธ ๊ตฌ์กฐ์™€ ์†์„ฑ์˜ ์˜๋ฏธ๋ฅผ ์„ค๋ช…

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