/SW_Backend_BootCamp

๐Ÿ“ƒ 200822 - 200919 ์ฝ”๋ฉ˜ํ†  ๋ฐฑ์—”๋“œ ๊ณผ์ • ์ง๋ฌด๋ถ€ํŠธ์บ ํ”„ ์ง„ํ–‰

Primary LanguageJava

์ง๋ฌด๋ถ€ํŠธ์บ ํ”„_SW๋ฐฑ์—”๋“œ๊ณผ์ •

1์ฃผ์ฐจ ์ฃผ๊ฐ„๋ณด๊ณ 

1. ์‚ฐ์ถœ๋ฌผ ๊ด€๋ฆฌ

  • Github ๊ณ„์ • ๋ฐ ํ•ด๋‹น Repository ์ƒ์„ฑ
    • Github ๊ณ„์ • ์ƒ์„ฑ > ๊ธฐ์กด Github ๊ณ„์ • ์žฌ์‚ฌ์šฉ (์™„๋ฃŒ)
    • Repository ์ƒ์„ฑ (์™„๋ฃŒ)

2. ๊ฐœ๋ฐœํ™˜๊ฒฝ ์…‹ํŒ…

  • JDK, Eclipse, Tomcat ํ™˜๊ฒฝ ์„ค์ •
    • JDK 1.8 ์„ค์น˜ ๋ฐ ํ™˜๊ฒฝ์„ค์ • (์™„๋ฃŒ)
    • Eclipse (2019-06) ์„ค์น˜ ๋ฐ ํ™˜๊ฒฝ์„ค์ • (์™„๋ฃŒ)
    • Tomcat 9.0 ์„ค์น˜ ๋ฐ ํ™˜๊ฒฝ์„ค์ • (์™„๋ฃŒ)
  • MariaDB ์„ค์น˜
    • ๋กœ์ปฌ ํ•˜๋“œ๋“œ๋ผ์ด๋ธŒ์— MariaDB ์„ค์น˜ (์™„๋ฃŒ)
      • ํฌํŠธ 3360์œผ๋กœ ์„ค์ • (MySQL ํฌํŠธ 3306 ์‚ฌ์šฉ ์ค‘)
    • Database IDE ์„ค์น˜ > MariaDBํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ MySQL Workbench 8.0 ์„ค์น˜ (์™„๋ฃŒ)
  • ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
    • theater ์Šคํ‚ค๋งˆ(Default Schema) ์ƒ์„ฑ (์™„๋ฃŒ)
    • movie ํ…Œ์ด๋ธ” ์ƒ์„ฑ ๋ฐ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ (์™„๋ฃŒ)
  • ์Šคํ”„๋ง๊ณผ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ™˜๊ฒฝ ์„ค์ • ๋ฐ ๊ฒ€ํ† 
    • ์Šคํ”„๋ง 5.2.8 ํ™˜๊ฒฝ์„ค์ •
      • STS ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜ > Spring Tools 3 (3.9.11 RELEASE) ์„ค์น˜ (์™„๋ฃŒ)
      • Maven ์˜์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „ ๊ด€๋ฆฌ > ์ตœ์‹  ๋ฒ„์ „ 5.2.8๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ (์™„๋ฃŒ)
      • ๋””ํŒฌ๋˜์‹œ ์ถ”๊ฐ€ > MariaDB, MyBatis, log4j ๋””ํŒฌ๋˜์‹œ ์ถ”๊ฐ€ (์™„๋ฃŒ)
      • DB ์—ฐ๊ฒฐ์ •๋ณด ์„ค์ • (์™„๋ฃŒ)
      • ์Šคํ”„๋ง MVC ๋””์ž์ธ ํŒจํ„ด ๊ตฌํ˜„
        • Service, DAO, VO ๊ฐ์ฒด ๊ตฌํ˜„ (์™„๋ฃŒ)
        • Controller ๊ฐ์ฒด ๊ตฌํ˜„ (์™„๋ฃŒ)
        • JSP ํŒŒ์ผ ์ƒ์„ฑ (์™„๋ฃŒ)
      • ํด๋ผ์ด์–ธํŠธ ํ™”๋ฉด์— movie ํ…Œ์ด๋ธ” ์ถœ๋ ฅ (์™„๋ฃŒ)
      • [์ด์Šˆ] root-context.xml ์—์„œ <context:component-scan> ํƒœ๊ทธ ์˜ค๋ฅ˜
        • ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ์— xml ์Šคํ‚ค๋งˆ ์ •๋ณด ์ถ”๊ฐ€ (ํ•ด๊ฒฐ)
    • ์Šคํ”„๋ง ๋ถ€ํŠธ ํ™˜๊ฒฝ์„ค์ • (์˜ˆ์ •)

3. ๊ธฐํƒ€

  • ๊ฐœ๋ฐœ ๊ณผ์ • ๋‚ด์šฉ ๊ธฐ๋ก
    • Notion์œผ๋กœ ๊ด€๋ฆฌ (์ง„ํ–‰)

2์ฃผ์ฐจ ์ฃผ๊ฐ„๋ณด๊ณ 

1. ๊ธฐ๋ฐ˜ ์ง€์‹ ์ดํ•ด

  • HTTP ํ”„๋กœํ† ์ฝœ
    • HTTP์˜ ์ •์˜ ๋ฐ ํŠน์„ฑ(์™„๋ฃŒ)
    • HTTP ์š”์ฒญ/์‘๋‹ต ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ (์™„๋ฃŒ)
  • REST ์•„ํ‚คํ…์ณ
    • REST ์•„ํ‚คํ…์ณ์˜ 6๊ฐ€์ง€ ํŠน์„ฑ (์™„๋ฃŒ)
    • REST์˜ 3๊ฐ€์ง€ ๊ตฌ์„ฑ ์š”์†Œ (์™„๋ฃŒ)
    • REST ์‚ฌ์šฉ ์ด์œ  ๋ฐ ์žฅ/๋‹จ์  (์™„๋ฃŒ)

2. ๋ฐฉ๋ฌธ์ž ํ†ต๊ณ„ API ๊ฐ€์ด๋“œ ๋ฌธ์„œ ์ž‘์„ฑ

  • ๋ฌธ์„œ ์ •๋ณด ๋ฐ ์„œ๋น„์Šค ๊ฐœ์š” ์ž‘์„ฑ
    • ๋ฌธ์„œ ์ •๋ณด ์ž‘์„ฑ (์™„๋ฃŒ)
    • ์„œ๋น„์Šค ๊ฐœ์š” ์ž‘์„ฑ (์™„๋ฃŒ)
  • API ์ƒ์„ธ ๋ฐ ๊ฒฐ๊ณผ ์ฝ”๋“œํ‘œ ์ž‘์„ฑ
    • ์ผ์ž ๋ณ„ ์ ‘์†์ž ์ˆ˜ API (์™„๋ฃŒ)
    • ํ•˜๋ฃจ ํ‰๊ท  ๋กœ๊ทธ์ธ ์ˆ˜ API (์™„๋ฃŒ)
    • ํœด์ผ์„ ์ œ์™ธํ•œ ๋กœ๊ทธ์ธ ์ˆ˜ API (์™„๋ฃŒ)
    • ๋ถ€์„œ ๋ณ„ ๋กœ๊ทธ์ธ ์ˆ˜ API (์™„๋ฃŒ)
    • ๊ฒฐ๊ณผ ์ฝ”๋“œํ‘œ ์ž‘์„ฑ (์™„๋ฃŒ)
  • URI ์„ค๊ณ„ ๊ฒ€ํ† 
    • URI๊ฐ€ ์†Œ๋ฌธ์ž๋กœ ์ž‘์„ฑ๋จ (ํ™•์ธ)
    • URI ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์— ์Šฌ๋ž˜์‹œ(/) ํฌํ•จํ•˜์ง€ ์•Š์Œ (ํ™•์ธ)
    • URI์— ์–ธ๋”๋ฐ”(_) ํฌํ•จํ•˜์ง€ ์•Š์Œ (ํ™•์ธ)
    • Resource๊ฐ€ ๋ช…์‚ฌ๋กœ ํ‘œํ˜„๋จ (ํ™•์ธ)

3. ๊ธฐํƒ€

  • ๊ฐœ๋ฐœ ๊ณผ์ • ๋‚ด์šฉ ๊ธฐ๋ก
    • Notion์œผ๋กœ ๊ด€๋ฆฌ (์ง„ํ–‰)
      • 1์ฃผ์ฐจ ์ •๋ฆฌ ์™„๋ฃŒ

3์ฃผ์ฐจ ์ฃผ๊ฐ„๋ณด๊ณ 

1. ๊ธฐ๋ฐ˜ ์ง€์‹ ์ดํ•ด

  • ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ๊ตฌ์กฐ ๋ฐ ํ๋ฆ„ (์ง„ํ–‰) โ‡’ ๋งํฌ ์—์„œ ํ™•์ธ
  • HTTP ํ”„๋กœํ† ์ฝœ ๋ฐ REST ์•„ํ‚คํ…์ณ (์™„๋ฃŒ) โ‡’ ๋งํฌ ์—์„œ ํ™•์ธ

2. ํ…Œ์ŠคํŠธ ํ†ต๊ณ„ API ๊ตฌํ˜„

  • ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
    • statistc ์Šคํ‚ค๋งˆ ์ƒ์„ฑ (์™„๋ฃŒ)
    • ์š”์ฒญ ์ •๋ณด, ์š”์ฒญ ์ฝ”๋“œ ๋ฐ ์‚ฌ์šฉ์ž ํ…Œ์ด๋ธ” ์ƒ์„ฑ (์™„๋ฃŒ)
    • ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ (์™„๋ฃŒ) โ†’ ์ถ”ํ›„ ๋žœ๋ค ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ์ƒ์„ฑ ์˜ˆ์ •
  • ์Šคํ”„๋ง ๋ถ€ํŠธ ํ™˜๊ฒฝ์„ค์ •
    • Spring.io ํ™œ์šฉํ•˜์—ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ ์„ค์ • (์™„๋ฃŒ) โ‡’ Tomcat, MariaDB Driver, JSTL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ ์ˆ˜๋™ ์ถ”๊ฐ€
    • ํ™˜๊ฒฝ ์„ค์ • ํŒŒ์ผ ์ž‘์„ฑ (์™„๋ฃŒ)
      • DB ํ™˜๊ฒฝ ์„ค์ •
      • View Resolver ์„ค์ •
      • Server ์„ค์ •
  • RestController๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋…„๋„๋ณ„ ์ด ๋กœ๊ทธ์ธ ์ˆ˜ API ๊ตฌํ˜„
    • Service, Mapper, VO ์ƒ์„ฑ (์™„๋ฃŒ)
      • DAO ๋Œ€์‹  Mapper ์ธํ„ฐํŽ˜์ด์Šค ํ™œ์šฉ
    • Mapper.xml ์ž‘์„ฑ (์™„๋ฃŒ)
      • MyBatis ๋™์  ์ฟผ๋ฆฌ ์‚ฌ์šฉ
      • SUBSTR() ํ•จ์ˆ˜ ํ™œ์šฉํ•˜์—ฌ ๋…„๋„๋ณ„ ๋ฐ์ดํ„ฐ ์ถ”์ถœ
    • Controller ๊ตฌํ˜„ (์™„๋ฃŒ)
      • RestController๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‘๋‹ต ๋ฐ”๋”” JSON ํ˜•ํƒœ๋กœ ๋ฆฌํ„ด
    • POSTMAN์œผ๋กœ ์‘๋‹ต ํ™•์ธ (์™„๋ฃŒ)

3. ๊ธฐํƒ€

  • ๊ฐœ๋ฐœ ์ง„ํ–‰ ๊ณผ์ • ๊ธฐ๋ก
    • Notion์œผ๋กœ ๊ด€๋ฆฌ (์ง„ํ–‰)
      • 1์ฃผ์ฐจ ์ •๋ฆฌ ์™„๋ฃŒ
      • 2์ฃผ์ฐจ ์ •๋ฆฌ ์™„๋ฃŒ

4์ฃผ์ฐจ ์ฃผ๊ฐ„๋ณด๊ณ 

1. Basic Auth ๊ตฌํ˜„

  • Spring Security ์ดํ•ด ๋ฐ ์ •๋ฆฌ (์™„๋ฃŒ) โ‡’ ๋งํฌ ์—์„œ ํ™•์ธ
  • ์ž„์‹œ Basic Auth ๊ตฌํ˜„ (์™„๋ฃŒ) โ†’ ํ•˜๋“œ์ฝ”๋”ฉ์œผ๋กœ ๊ตฌํ˜„, ์ถ”ํ›„ ๋””๋ฒจ๋กญ ์˜ˆ์ •

2. ํ†ต๊ณ„ API ๊ตฌํ˜„

  • SQL๋ฌธ ์ž‘์„ฑ โ†’ files ํด๋” sql_api_final.sql ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ
    • ์ผ์ž ๋ณ„ ์ ‘์†์ž ์ˆ˜ SQL๋ฌธ ์ž‘์„ฑ (์™„๋ฃŒ)
    • ํ•˜๋ฃจ ํ‰๊ท  ๋กœ๊ทธ์ธ ์ˆ˜ SQL๋ฌธ ์ž‘์„ฑ (์™„๋ฃŒ)
    • ํœด์ผ์„ ์ œ์™ธํ•œ ๋กœ๊ทธ์ธ ์ˆ˜ SQL๋ฌธ ์ž‘์„ฑ (์™„๋ฃŒ)
    • ๋ถ€์„œ ๋ณ„ ๋กœ๊ทธ์ธ ์ˆ˜ SQL๋ฌธ ์ž‘์„ฑ (์™„๋ฃŒ)
  • SQL๋ฌธ ํ…Œ์ŠคํŠธ (์™„๋ฃŒ)
  • RestController๋ฅผ ํ™œ์šฉํ•˜์—ฌ API ๊ตฌํ˜„
    • Service, Mapper, VO ์ƒ์„ฑ (์™„๋ฃŒ)
      • Lombok ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™œ์šฉํ•˜์—ฌ VO ๋ฉ”์„œ๋“œ ์ƒ์„ฑ
      • DAO ๋Œ€์‹  Mapper ์ธํ„ฐํŽ˜์ด์Šค ํ™œ์šฉ
    • Mapper.xml ์ž‘์„ฑ (์™„๋ฃŒ)
    • Controller ๊ตฌํ˜„ (์™„๋ฃŒ)
      • RestController๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‘๋‹ต ๋ฐ”๋”” JSON ํ˜•ํƒœ๋กœ ๋ฆฌํ„ด
      • API URI ์ˆ˜์ •
    • POSTMAN์œผ๋กœ ์‘๋‹ต ํ™•์ธ (์™„๋ฃŒ)
  • API ๊ฐ€์ด๋“œ ๋ฌธ์„œ ์ˆ˜์ • ๋ฐ ์—…๋กœ๋“œ โ†’ files ํด๋” 4์ฃผ์ฐจ_API๊ฐ€์ด๋“œ๋ฌธ์„œ.pdf ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ
    • API ๊ฐ€์ด๋“œ ๋ฌธ์„œ ์ˆ˜์ • ๋ฐ ๋ณด์™„ (์™„๋ฃŒ)
    • Repository ์—…๋กœ๋“œ (์™„๋ฃŒ)
    • API ์‘๋‹ต ์˜ˆ์ œ ์˜คํƒ€ ์ˆ˜์ • (์™„๋ฃŒ)

3. API ์‘๋‹ต ๊ฐ’์„ Excel ํŒŒ์ผ๋กœ ๋‹ค์šด๋กœ๋“œ

  • Apache POI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ ์šฉ (์™„๋ฃŒ)
  • ์‘๋‹ต ๊ฐ’์„ Excel ํŒŒ์ผ๋กœ ๋‹ค์šด๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ๋„๋ก poi ํด๋ž˜์Šค ์ž‘์„ฑ (์™„๋ฃŒ)
  • ์ •์ƒ ์ž‘๋™ ํ™•์ธ (์™„๋ฃŒ)

4. ๊ธฐํƒ€

  • ๊ฐœ๋ฐœ ์ง„ํ–‰ ๊ณผ์ • ๊ธฐ๋ก
    • Notion์œผ๋กœ ๊ด€๋ฆฌ (์ง„ํ–‰)
      • 1์ฃผ์ฐจ ์ •๋ฆฌ ์™„๋ฃŒ
      • 2์ฃผ์ฐจ ์ •๋ฆฌ ์™„๋ฃŒ
      • 3์ฃผ์ฐจ ์ •๋ฆฌ ์™„๋ฃŒ