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

Was this helpful?