2021-04-01(Thu)

ํ•ญ๋ชฉ

๋‚ด์šฉ

ํ•™์Šต ๋‚ ์งœ

2021-04-01(๋ชฉ)

ํ•™์Šต ์‹œ๊ฐ„

11:00~23:00

ํ•™์Šต ๋ฒ”์œ„ ๋ฐ ์ฃผ์ œ

spring

ํ•™์Šต ๋ชฉํ‘œ

spring์„ ํ•™์Šตํ•˜์ž!

๋™๋ฃŒ ํ•™์Šต ๋ฐฉ๋ฒ•

-

์ƒ์„ธ ํ•™์Šต ๋‚ด์šฉ

์Šคํ”„๋ง ๋นˆ๊ณผ ์˜์กด๊ด€๊ณ„

์Šคํ”„๋ง์€ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ, ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ '์Šคํ”„๋ง ๋นˆ'์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค. ์ƒ์„ฑ์ž์— @Autowired๊ฐ€ ์—ฐ๊ด€๋œ ์Šคํ”„๋ง ๋นˆ์„ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ฐพ์•„์„œ ๋„ฃ์–ด์ค€๋‹ค. ์˜์กด์„ฑ ์ฃผ์ž…์„ ํ”„๋ ˆ์ž„์›Œํฌ ์ฐจ์›์—์„œ ํŽธํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ์…ˆ. ์ฐธ๊ณ ๋กœ @Autowired ๋ฅผ ํ†ตํ•œ DI๋Š” helloController, memberService ๋“ฑ๊ณผ ๊ฐ™์ด ์Šคํ”„๋ง์ด ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด์—์„œ๋งŒ ๋™์ž‘ํ•œ๋‹ค. ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•˜์ง€ ์•Š๊ณ  ๋‚ด๊ฐ€ ์ง์ ‘ ์ƒ์„ฑํ•œ ๊ฐ์ฒด์—์„œ๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์Šคํ”„๋ง ๋นˆ์€ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ์ปดํฌ๋„ŒํŠธ ์Šค์บ”๊ณผ ์ž๋™ ์˜์กด๊ด€๊ณ„ ์„ค์ •

    • @Component ์–ด๋…ธํ…Œ์ด์…˜์ด ์žˆ์œผ๋ฉด ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ์ž๋™ ๋“ฑ๋ก๋œ๋‹ค. @Controller, @Service, @Repository ๋„ ๋‚ด๋ถ€ ์ฝ”๋“œ๋ฅผ ๋œฏ์–ด๋ณด๋ฉด @Component ์–ด๋…ธํ…Œ์ด์…˜์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.

    • ์ด๋ ‡๊ฒŒ ๋“ฑ๋ก๋˜๋Š” ์Šคํ”„๋ง ๋นˆ ๊ฐ์ฒด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ฑ๊ธ€ํ†ค์ด๋‹ค. (์„ค์ •์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๊ธด ํ•จ)

    • ์ฐธ๊ณ ๋กœ ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์€ @SpringBootApplication ์–ด๋…ธํ…Œ์ด์…˜์ด ์ •์˜๋œ ํด๋ž˜์Šค๊ฐ€ ์†ํ•œ ํŒจํ‚ค์ง€์˜ ํ•˜์œ„ ์š”์†Œ๋“ค์ด ๋Œ€์ƒ์ด๋‹ค.

  2. ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์ง์ ‘ ์Šคํ”„๋ง ๋นˆ ๋“ฑ๋กํ•˜๊ธฐ

    • @Configuration ์–ด๋…ธํ…Œ์ด์…˜๊ณผ ํ•จ๊ป˜ ์„ค์ • ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ด ๋•Œ @Bean ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์Šคํ”„๋ง ๋นˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

    • ๋ฉ”๋ชจ๋ฆฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋‹ค๋ฅธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋“ฑ์˜ ๊ฐ์ฒด๋ณ€๊ฒฝ์‹œ ์ˆ˜์ •ํ•ด์•ผํ•  ์ฝ”๋“œ๊ฐ€ ์ปดํฌ๋„ŒํŠธ ์Šค์บ” ๋ฐฉ์‹์— ๋น„ํ•ด ์ ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

์Šคํ”„๋ง์—์„œ ์˜์กด์„ฑ ์ฃผ์ž… ๋ฐฉ์‹ 3๊ฐ€์ง€

  • ํ•„๋“œ ์ฃผ์ž…

    • ์ฃผ์ž…์‹œ ์„ค์ •์„ ๋””ํ…Œ์ผํ•˜๊ฒŒ ๋ฐ”๊พธ๊ธฐ ์–ด๋ ค์œผ๋ฏ€๋กœ ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค.

  • setter ์ฃผ์ž…

    • ์˜์กด๊ด€๊ณ„๊ฐ€ ์‹คํ–‰ ์ค‘์— ๋™์ ์œผ๋กœ ๋ณ€ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฑฐ์˜ ์—†๋Š” ๋ฐ˜๋ฉด, setter ์ฃผ์ž…์€ ๋™์  ๋ณ€๊ฒฝํ•  ์—ฌ์ง€๋ฅผ ๋‚จ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค.

  • ์ƒ์„ฑ์ž ์ฃผ์ž…

    • ์‹ค๋ฌด์—์„œ ๊ฐ€์žฅ ๊ถŒ์žฅ๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

rails์™€ ๋น„์Šทํ•˜๋ฉด์„œ ๋‹ฌ๋ผ์„œ ํฅ๋ฏธ๋กœ์šด ๊ฒƒ๋“ค์ด ์žˆ๋‹ค. rails์—์„œ๋Š” ์—”๋“œํฌ์ธํŠธ๋“ค์„ route.rb ํŒŒ์ผ์— ๋ช…์‹œํ•œ ๋ฐ˜๋ฉด, ์Šคํ”„๋ง์€ ํŒŒ์ผ๋งˆ๋‹ค ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ๋งตํ•‘ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์žฌ๋ฐŒ๊ฒŒ๋„, rails์—์„œ๋Š” ์–ด๋–ค ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋“  params ๊ฐ์ฒด๋ฅผ ํ˜ธ์ถœํ•ด์„œ query๋‚˜ body์— ํฌํ•จ๋œ ๊ฐ’์„ key ๊ฐ’์„ ์ธ๋ฑ์Šค ์‚ผ์•„ value๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋ฐ˜๋ฉด ์Šคํ”„๋ง๋ถ€ํŠธ์—์„œ๋Š” key ๊ฐ’์— ๋Œ€์‘ํ•˜๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ ์š”์ฒญ์„ ๋ฐ›๋Š”๋‹ค. ์ด๊ฑด ๊ฐœ์ธ์ ์œผ๋ก  ์ƒ์‚ฐ์„ฑ ์ €ํ•˜ ์š”์ธ์ด ๋  ์ˆ˜ ์žˆ๊ฒ ๋‹ค ์‹ถ์ง€๋งŒ, ์—”๋“œํฌ์ธํŠธ์™€ ์—ฐ๊ฒฐ๋œ ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ๋งŒ ์กฐ์ž‘๋  ์ˆ˜ ์žˆ๋„๋ก ์ œํ•œํ•˜๊ธฐ ํŽธํ•˜๊ฒ ๋‹ค ์‹ถ๋‹ค. ํŽธ์˜์„ฑ vs ์•ˆ์ •์„ฑ์ด๋ž„๊นŒ. ๊ทธ๋ฆฌ๊ณ  rails์—์„œ๋Š” DB migrate ๋‚ด์—ญ์„ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๊ฒŒ๋” ์ปค๋งจ๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ DB ํ…Œ์ด๋ธ”์„ ์กฐ์ž‘ํ•œ๋‹ค. ๋ฐ˜๋ฉด spring boot๋Š” DB migrate ๋‚ด์—ญ์€ ์…€ํ”„๋กœ ๋‚จ๊ฒจ์•ผํ•˜๋Š”๋“ฏ ํ•˜๋‹ค. ๊ทธ๋ƒฅ ๊ธฐ์ดˆ์ ์ธ spring boot ์˜ˆ์ œ์—ฌ์„œ ๊ทธ๋Ÿฐ๊ฐ€?

ํ•™์Šต ๋‚ด์šฉ์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ์ดํ‰

ํ  ์žฌ๋ฐŒ๊ธดํ•œ๋ฐ ๊ฐˆ๊ธธ์ด ๋ฉ€๋‹ค!

๋‹ค์Œ ํ•™์Šต ๊ณ„ํš

  • ๋””์ž์ธํŒจํ„ด ํ•™์Šต

Last updated