Spring Boot2

UnKnown12Β·2022λ…„ 11μ›” 22일
0

πŸ“Œ @ Autowired

DI ( Dependency Injection )

ν΄λž˜μŠ€κ°„ μ˜μ‘΄κ΄€κ³„λ₯Ό Spring μ»¨ν…Œμ΄λ„ˆκ°€ μžλ™μœΌλ‘œ μ—°κ²°ν•΄μ£ΌλŠ” 것

@Controller λ₯Ό μ μš©λ°›μ€
MemberController κ°€ 생성될 λ•Œ, μƒμ„±μžλ₯Ό ν˜ΈμΆœν•΄μ€€λ‹€
(= 즉, Serivce κΉŒμ§€ μƒμ„±ν•΄μ„œ μžλ™μœΌλ‘œ ν˜ΈμΆœν•΄μ€€λ‹€)

@Controller λ₯Ό λ‹΄λ‹Ήν•˜λŠ” MemberController ν΄λž˜μŠ€μ—
λ‹€λ₯Έ 클래슀의 의쑴 ( νŒŒλΌλ―Έν„°λ₯Ό 톡해 ) λ°›μ•„μ•Ό ν•  λ•Œ

@Autuwired 선언을 톡해
μ˜μ‘΄ν•˜λŠ” 클래슀λ₯Ό @Controller λ©”μ†Œλ“œμ— μ—°κ²°μ‹œν‚€λŠ” μž‘μ—…
( 의쑴 클래슀 = MemberSerivce )

MemberService 와 MemberController λŠ”
같은 Spring Container 에 μžˆκΈ°μ—
μ™ΈλΆ€ μ„ μ–Έ 없이 λ‚΄λΆ€ spring @ μ–΄λ…Έν…Œμ΄μ…˜ μ„ μ–ΈμœΌλ‘œ μ—°κ²°μ‹œν‚¬ 수 μžˆλ‹€.

πŸ“Œ DI ( Dependency Injection )

μ˜μ‘΄μ„± μ£Όμž…

κ°μ²΄κ°„μ˜ μ˜μ‘΄μ„±μ΄ μ‘΄μž¬ν•  경우 κ°œλ°œμžκ°€ 직접 객체λ₯Ό 생성 ν•˜κ±°λ‚˜ μ œμ–΄ν•˜λŠ” 것이 μ•„λ‹ˆλΌ,
μ œμ–΄ λ°˜μ „μ— μ˜ν•˜μ—¬ νŠΉμ • 객체 ν•„μš”ν•œ λ‹€λ₯Έ 객체λ₯Ό ν”„λ ˆμž„μ›Œν¬κ°€ μžλ™μœΌλ‘œ μ—°κ²°μ‹œμΌœ μ£ΌλŠ” 것을 λ§ν•œλ‹€.

κ°œλ°œμžλŠ” μžμ‹ μ—κ²Œ ν•„μš”ν•œ 객체λ₯Ό 직접 ν• λ‹Ήν•˜μ§€ μ•Šκ³ , μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 μ„ μ–Έν•œ 객체에 μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬μ— μ˜ν•΄ μ£Όμž…λ°›μ•„ μ‚¬μš©ν•  수 있기 λ•Œλ¬Έμ— λΉ„μ§€λ‹ˆμŠ€ λ‘œμ§μ—λ§Œ 집쀑할 수 μžˆλ‹€.

κ°œλ°œμžλŠ” 객체λ₯Ό μ„ μ–Έλ§Œ ν•˜λ©΄λœλ‹€.
할당은 ν”„λ ˆμž„μ›Œν¬κ°€ μžλ™μœΌλ‘œ μ•Œμ•„μ„œ ν•œλ‹€.

πŸ“Œ μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆ

μŠ€ν”„λ§μ€ μ‹€ν–‰μ‹œ 객채듀을 λ‹΄κ³  μžˆλŠ” μ»¨ν…Œμ΄λ„ˆκ°€ μžˆλ‹€. = μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆ

μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆλŠ” μžλ°” κ°μ±„μ˜ 생λͺ… μ£ΌκΈ°λ₯Ό κ΄€λ¦¬ν•˜λ©°,
μƒμ„±λœ μžλ°” κ°μ²΄λ“€μ—κ²Œ 좔가적인 κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” 역할을 λ‹΄λ‹Ή
( ν•΄λ‹Ή μžλ°” 객체 = Bean )

κ°œλ°œμžλŠ” 객체λ₯Ό μƒμ„±ν•˜κ³  μ†Œλ©Έν•  수 μžˆλŠ”λ°,
μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆκ°€ 이 역할을 λŒ€μ‹  ν•΄μ€€λ‹€.

즉, μ œμ–΄μ˜ 흐름을 μ™ΈλΆ€μ—μ„œ κ΄€λ¦¬ν•˜λŠ” 것 + 객체듀 κ°„μ˜ μ˜μ‘΄κ΄€κ³„λ₯Ό
μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆ λŸ°νƒ€μž„ κ³Όμ •μ—μ„œ μ•Œμ•„μ„œ λ§Œλ“€μ–΄ μ€€λ‹€.

πŸ“Œ μ œμ–΄ μ—­μ „ IOC

Inversion Of Control

κ°œλ°œμžκ°€ ν”„λ ˆμž„μ›Œν¬μ˜ κΈ°λŠ₯을 ν˜ΈμΆœν•˜λŠ” ν˜•νƒœκ°€ μ•„λ‹ˆλΌ,
ν”„λ ˆμž„μ›Œν¬κ°€ 개발자의 μ½”λ“œλ₯Ό ν˜ΈμΆœν•˜κΈ° λ•Œλ¬Έμ—

κ°œλ°œμžλŠ” μ½”λ“œ 전체λ₯Ό 직접 κ΅¬ν˜„ν•˜μ§€ μ•Šκ³ 
μžμ‹ μ˜ μ½”λ“œλ₯Ό λΆ€λΆ„μ μœΌλ‘œ "λΌμ›Œλ„£κΈ°" ν•˜λŠ” ν˜•νƒœλ‘œ κ΅¬ν˜„ν•  수 μžˆλ‹€.

객체의 μ˜μ‘΄μ„±μ„ μ—­μ „μ‹œμΌœ 객체 κ°„μ˜ 결합도λ₯Ό 쀄이고
μœ μ—°ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•  수 있게 ν•˜μ—¬ 가독성 및 μ½”λ“œ 쀑볡, μœ μ§€λ³΄μˆ˜λ₯Ό νŽΈν•˜κ²Œ ν•  수 μžˆλ‹€.

πŸ“Œ POJO

Plain Old Java Object

λ‹¨μˆœ μžλ°” 였브젝트
객체 지ν–₯ 원리에 μΆ©μ‹€ν•˜λ©΄μ„œ , ν™˜κ²½κ³Ό κΈ°μˆ μ— μ’…μ†λ˜μ§€ μ•Šκ³ 
ν•„μš”μ— 따라 μž¬ν™œμš©λ  수 μžˆλŠ” λ°©μ‹μœΌλ‘œ μ„€κ³„λœ 였브젝트λ₯Ό λ§ν•œλ‹€.

κ·ΈλŸ¬ν•œ POJO에 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 핡심 둜직과 κΈ°λŠ₯을 λ‹΄μ•„ μ„€κ³„ν•˜κ³  κ°œλ°œν•˜λŠ” 방법을
POJO ν”„λ‘œκ·Έλž˜λ° 이라고 ν•œλ‹€.

profile
Hyobin12

0개의 λŒ“κΈ€