SpringBoot

์ธํ”„๋Ÿฐ : ๋ฐฑ๊ธฐ์„ ์˜ ์˜ˆ์ œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ -1

PYT 2019. 12. 11. 23:07
๋ฐ˜์‘ํ˜•

(์ถœ์ฒ˜:์ธํ”„๋Ÿฐ)

์ธํ”„๋Ÿฐ : ์˜ˆ์ œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ์ž…๋ฌธ IoC ๋ถ€ํ„ฐ DI๊นŒ์ง€์˜ ๋‚ด์šฉ ์ •๋ฆฌ

 

๊ฐ•์˜ ์˜ˆ์ œ์ฝ”๋“œ : 

 

spring-projects/spring-petclinic

A sample Spring-based application. Contribute to spring-projects/spring-petclinic development by creating an account on GitHub.

github.com

 

๋ฐฑ๊ธฐ์„  ๊ฐ•์˜ ๊ฐ•์ขŒ๋…ธํŠธ : 

 

์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ์ž…๋ฌธ

์œ ๋ฐ๋ฏธ์— ์˜ฌ๋ฆฐ ์Šคํ”„๋ง ์ž…๋ฌธ์ž์šฉ ๊ฐ•์ขŒ ๋…ธํŠธ ์ž…๋‹ˆ๋‹ค.

www.slideshare.net

 


 

์Šคํ”„๋ง์˜ ์ฃผ์š”๊ธฐ์ˆ 

IoC/DI, AOP, PSA๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ POJO๋กœ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ์ˆ 

 

1. IoC(Inversion of Control) ์ œ์–ด๊ถŒ์˜ ์—ญ์ „

์ผ๋ฐ˜์ ์ธ ์˜์กด์„ฑ์— ๋Œ€ํ•œ ์ œ์–ด๊ถŒ : ์ž๊ธฐ๊ฐ€ ๋งŒ๋“ค์–ด ์”€

IoC๋Š” ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•  ์˜์กด์„ฑ์˜ ํƒ€์ž…(๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค)๋งŒ ๋งž์œผ๋ฉด ์–ด๋–ค๊ฒƒ์ด๋“  ์ƒ๊ด€์—†์ด ์•Œ์•„์„œ ํ•ด์คŒ, ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฝ”๋“œ ํ…Œ์ŠคํŠธ๋„ ํŽธํ•จ

 

  • DI(Dependency ) ์˜์กด์„ฑ์ฃผ์ž… : DI๋„ ์ผ์ข…์˜ IoC, ์ œ์–ด๊ถŒ ์ž์ฒด๊ฐ€ ๋‚ด๊ฐ€ ์•„๋‹ˆ๋ผ ์™ธ๋ถ€์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ

    ํ•„์š”ํ•œ ์˜์กด์„ฑ์„ ์–ด๋–ป๊ฒŒ ๋ฐ›์•„์˜ฌ ๊ฒƒ์ธ๊ฐ€ ? ๋ฐฉ๋ฒ•์€ ์„ธ๊ฐ€์ง€ !

    1. ์ƒ์„ฑ์ž (์Šคํ”„๋ง ๋ ˆํผ๋Ÿฐ์Šค์—์„œ ๊ถŒ์žฅ)

    2. ํ•„๋“œ

    3. Setter
  • ๋นˆ(Bean) : ์Šคํ”„๋ง IoC ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด

           ๋“ฑ๋ก๋ฐฉ๋ฒ• ?

            1. Component Scanning : @๊ฐ€ ๋ถ™์–ด์žˆ๋Š” ๋ชจ๋“  class๋“ค์„ ์ฐพ์•„์„œ Bean์œผ๋กœ ๋“ฑ๋กํ•ด์ฃผ๋Š” ๊ฒƒ

               (๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ owner Controller๋ฅผ ๋“ฑ๋กํ•˜์ง€ ์•Š์•„๋„, ์Šคํ”„๋ง์ด ์•Œ์•„์„œ IoC์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋งŒ๋“ค์–ด์งˆ ๋•Œ @๋ฅผ ๋ณด๊ณ  ๋“ฑ๋ก)

                ์ข…๋ฅ˜ : @Component, @Repository, @Service, @Controller, @Configuration...etc

 

            2. ์ง์ ‘ XML์ด๋‚˜ ์ž๋ฐ” ์„ค์ •ํŒŒ์ผ์— ๋“ฑ๋ก (ํ•˜์ง€๋งŒ ๊ทธ๋Ÿฐ์ผ์€ ์ž์ฃผ ์—†์Œ)

๋ฐ˜์‘ํ˜•