IoC(Inversion of Control), DI(Dependency Injection)

IoC μ œμ–΄ μ—­μ „μ˜ 원칙, λŒ€μ‹  ν•΄μ€€λ‹€ DI μ˜μ‘΄μ„± μ£Όμž…, λŒ€μ‹  λ„£μ–΄μ€€λ‹€

Beanμ΄λž€?

μžλ°”μ—μ„œμ˜ javaBean

  • 데이터λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•œ ꡬ쑰체둜 μžλ°” 빈 κ·œμ•½μ„ λ”°λ₯΄λŠ” ꡬ쑰체.

  • private ν”„λ‘œνΌν‹°μ™€ getter/setter 둜만 데이터λ₯Ό μ ‘κ·Όν•œλ‹€.

  • μΈμˆ˜κ°€ (argument) μ—†λŠ” κΈ°λ³Έ μƒμ„±μžκ°€ μžˆλ‹€.

μŠ€ν”„λ§μ—μ„œμ˜ Bean

  • μŠ€ν”„λ§ IoC μ»¨ν…Œμ΄λ„ˆμ— μ˜ν•΄ μƒμ„±λ˜κ³  κ΄€λ¦¬λ˜λŠ” 객체.

  • μžλ°”μ—μ„œμ²˜λŸΌ new Object(); 둜 μƒμ„±ν•˜μ§€ μ•ŠλŠ”λ‹€.

  • 각각의 Bean λ“€ λΌλ¦¬λŠ” μ„œλ‘œλ₯Ό νŽΈλ¦¬ν•˜κ²Œ 의쑴 (μ‚¬μš©) ν•  수 있음.

μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆ κ°œμš”

ApplicationContext μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 μ œκ³΅λ˜λŠ” μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆλŠ” Bean 객체의 생성 및 Bean λ“€μ˜ 쑰립을 λ‹΄λ‹Ή (μƒν˜Έ μ˜μ‘΄μ„± 관리)

Bean의 등둝

  • κ³Όκ±°μ—λŠ” xml 둜 섀정을 λ”°λ‘œ κ΄€λ¦¬ν•˜μ—¬ 등둝 (뢈편)

  • ν˜„μž¬λŠ” annotation 기반으둜 Bean 등둝

    • @Bean, @Controller, @Service

Bean 등둝 μ‹œ 정보

  • Class 경둜

  • Bean naming

    • κΈ°λ³Έμ μœΌλ‘œλŠ” 원 Class μ΄λ¦„μ—μ„œ 첫 문자만 μ†Œλ¬Έμžλ‘œ λ³€κ²½ β†’ accountService, userDao

    • μ›ν•˜λŠ” 경우 λ³€κ²½ κ°€λŠ₯

  • Scope Bean 을 μƒμ„±ν•˜λŠ” κ·œμΉ™

    • singleton default κ°’μœΌλ‘œ μ»¨ν…Œμ΄λ„ˆμ— λ‹¨μΌλ‘œ 생성

    • prototype μž‘μ—… μ‹œλ§ˆλ‹€ Bean을 μƒˆλ‘œ μƒμ„±ν•˜κ³  싢을 경우

    • request http μš”μ²­λ§ˆλ‹€ μƒˆλ‘­κ²Œ Bean을 μƒμ„±ν•˜κ³  싢은 경우

Bean LifeCycle callback(빈 생λͺ…μ£ΌκΈ° μ½œλ°±ν•¨μˆ˜)

  • callback : μ–΄λ–€ μ΄λ²€νŠΈκ°€ λ°œμƒν•˜λŠ” 경우 ν˜ΈμΆœλ˜λŠ” λ©”μ„œλ“œ

  • lifecycle callback

    • Bean을 μƒμ„±ν•˜κ³  μ΄ˆκΈ°ν™”ν•˜κ³  νŒŒκ΄΄ν•˜λŠ” λ“± νŠΉμ • μ‹œμ μ— ν˜ΈμΆœλ˜λ„λ‘ μ •μ˜λœ ν•¨μˆ˜

  • 주둜 많이 μ‚¬μš©λ˜λŠ” 콜백

    • @PostConstruct 빈 생성 μ‹œμ μ— ν•„μš”ν•œ μž‘μ—…μ„ μˆ˜ν–‰

    • @PreDestroy 빈 파괴(주둜 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ μ’…λ£Œ) μ‹œμ μ— ν•„μš”ν•œ μž‘μ—…μ„ μˆ˜ν–‰

Last updated

Was this helpful?