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?