Spring-study๐ฑ/Spring-Basic60 Section 8-2. ์ธํฐํ์ด์ค InitializingBean, DisposableBean ์ธํฐํ์ด์ค InitializingBean, DisposableBean ์์ ๋ง๋ NetworkClient ํด๋์ค์ InitializingBean๊ณผ DisposableBean์ ์์๋ฐ์ ๊ตฌํํด๋ณด์. InitializingBean์ ๊ตฌํ๋ฉ์๋ afterPropertiesSet์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์์กด๊ด๊ณ ์ฃผ์ ์ด ๋๋๋ฉด ํธ์ถ๋๋ ๋ฉ์๋์ด๋ค. DisposableBean์ ๊ตฌํ๋ฉ์๋ destroy๋ ์คํ๋ง ์ปจํ ์ด๋๊ฐ close๋ ๋ ์คํ๋ง ๋น๋ค์ด ํ๋์ฉ ์๋ฉธ๋๋ฉด์ ํธ์ถ๋๋ค. ๋ฐ๋ผ์ ์์ ํ๊ฒ ์ฐ๊ฒฐ์ ์ข ๋ฃํ ์ ์๋๋ก ํด์ค๋ค. ์์ฑ์ ํธ์ถ์์๋ url์ด ์กด์ฌํ์ง ์๊ณ ์คํ๋ง ์์กด๊ด๊ณ ์ฃผ์ ์ด ๋๋๋ฉด ์ด๊ธฐํ ๋ฉ์๋(afterPropertiesSet)์ ์๋ฉธ ๋ฉ์๋(destroy)๊ฐ ํธ์ถ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์ด๊ธฐํ, .. 2022. 4. 29. Section 8-1. ๋น ์๋ช ์ฃผ๊ธฐ ์ฝ๋ฐฑ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์ ํ์ด๋, ๋คํธ์ํฌ ์์ผ์ฒ๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ ์ ํ์ํ ์ฐ๊ฒฐ์ ๋ฏธ๋ฆฌ ํด๋๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ข ๋ฃ ์์ ์ ์ฐ๊ฒฐ์ ๋ชจ๋ ์ข ๋ฃํ๋ ์์ ์ ์งํํ๋ ค๋ฉด, ๊ฐ์ฒด์ ์ด๊ธฐํ์ ์ข ๋ฃ ์์ ์ด ํ์ํ๋ค. ์ด๋ฒ์๊ฐ์๋ ์คํ๋ง์ ํตํด ์ด๋ฌํ ์ด๊ธฐํ ์์ ๊ณผ ์ข ๋ฃ ์์ ์ ์ด๋ป๊ฒ ์งํํ๋์ง ์์ ๋ก ์์๋ณด์ ๊ฐ์ฒด์ ์ด๊ธฐํ์ ์ข ๋ฃ ์์ ์์ ๊ฐ๋จํ๊ฒ ์ธ๋ถ ๋คํธ์ํฌ์ ๋ฏธ๋ฆฌ ์ฐ๊ฒฐํ๋ ๊ฐ์ฒด๋ฅผ ํ๋ ์์ฑํ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ์ค์ ๋ก ๋คํธ์ํฌ์ ์ฐ๊ฒฐํ๋ ๊ฒ์ ์๋๊ณ , ๋จ์ํ ๋ฌธ์๋ง ์ถ๋ ฅํ๋๋ก ํ๋ค. ์ด NetworkClient ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ ์connect() ๋ฅผ ํธ์ถํด์ ์ฐ๊ฒฐ์ ๋งบ์ด๋์ด์ผ ํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ข ๋ฃ๋๋ฉด disConnect() ๋ฅผ ํธ์ถํด์ ์ฐ๊ฒฐ์ ๋์ด์ผ ํ๋ค. ํ ์คํธ ์ฝ๋ ์ฌ๊ธฐ์๋ ์ปจํ ์ด๋๋ฅผ ์ข ๋ฃ(c.. 2022. 4. 29. Section 7-9. ์๋, ์๋์ ์ฌ๋ฐ๋ฅธ ์ค๋ฌด ์ด์ ๊ธฐ์ค ์์กด๊ด๊ณ ์ฃผ์ ์ ํ๋๋ฐ ์์ด ์๋์ผ๋ก ํ๋ ๊ฒ์ด ์ข์์ง ์๋์ผ๋ก ํ๋ ๊ฒ์ด ์ข์์ง ์ฌ๋ฐ๋ฅธ ๊ธฐ์ค์ ๋ํด ์์๋ณด๋ ค๊ณ ํ๋ค. ํธ๋ฆฌํ ์๋ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ์ ๊ทธ๋ฌ๋ฉด ์ด๋ค ๊ฒฝ์ฐ์ ์ปดํฌ๋ํธ ์ค์บ๊ณผ ์๋ ์ฃผ์ ์ ์ฌ์ฉํ๊ณ , ์ด๋ค ๊ฒฝ์ฐ์ ์ค์ ์ ๋ณด(AppConfig)๋ฅผ ํตํด์ ์๋์ผ๋ก ๋น์ ๋ฑ๋กํ๊ณ ์์กด๊ด๊ณ๋ฅผ ์๋์ผ๋ก ์ฃผ์ ํด์ผ ํ ๊น? ๊ฒฐ๋ก ๋ถํฐ ์๊ธฐํ๋ฉด, ์คํ๋ง์ด ๋์ค๊ณ ์๊ฐ์ด ๊ฐ ์๋ก ์ ์ ์๋์ ์ ํธํ๋ ์ถ์ธ์ด๋ค. ์คํ๋ง์ @Component ๋ฟ๋ง ์๋๋ผ @Controller, @Service, @Repository ์ฒ๋ผ ๊ณ์ธต์ ๋ง์ถ์ด ์ผ๋ฐ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ์๋์ผ๋ก ์ค์บํ ์ ์๋๋ก ์ง์ํ๋ค. ์ถ๊ฐ๋ก ์ต๊ทผ ์คํ๋ง ๋ถํธ๋ ์ปดํฌ๋ํธ ์ค์บ์ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๊ณ , ์คํ๋ง ๋ถํธ์ ๋ค์ํ ์คํ๋ง ๋น๋ค๋ ์กฐ๊ฑด์ด ๋ง์ผ๋ฉด.. 2022. 4. 28. Section 7-8. ์กฐํํ ๋น์ด ๋ชจ๋ ํ์ํ ๋, List, Map ์๋์ ์ผ๋ก ์ ๋ง ํด๋น ํ์ ์ ์คํ๋ง ๋น์ด ๋ค ํ์ํ ๊ฒฝ์ฐ๋ ์๋ค. ์๋ฅผ ๋ค์ด์ ํ ์ธ ์๋น์ค๋ฅผ ์ ๊ณตํ๋๋ฐ, ํด๋ผ์ด์ธํธ๊ฐ ํ ์ธ์ ์ข ๋ฅ(rate, fix)๋ฅผ ์ ํํ ์ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์. ์คํ๋ง์ ์ฌ์ฉํ๋ฉด ์์ ๋งํ๋ ์ ๋ต ํจํด์ ๋งค์ฐ ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์๋ค. ์์ ๊ฐ์ด ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ์๋ค. ์ ์ ๋ง๋ค์ด๋์๋ AutoAppConfig๋ฅผ ํตํ์ฌ ์ปดํฌ๋ํธ ์ค์บ์ ์งํํ์ฌ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋ค.(@Component๊ฐ ๋ถ์ ํด๋์ค ๋ชจ๋ ๋ฑ๋ก) ์ฐ๋ฆฌ๊ฐ static์ผ๋ก ๋ง๋ ์์ฑ์ DiscountService๋ํ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก์ํค๋๋ฐ ์์กด๊ด๊ณ ์ฃผ์ ์ List์ Mapํํ๋ก RateDiscountPolicy์ FixDiscountPolicy๋ฅผ ์ฃผ์ ํ ๊ฒ์ด๋ค. ํ ์คํธ๋ฅผ ์คํ ์ํค๋ฉด ๋ค์๊ณผ ๊ฐ์ด Map๊ณผ Lis.. 2022. 4. 28. Section 7-7. ์ ๋ ธํ ์ด์ ์ง์ ๋ง๋ค๊ธฐ @Qualifier("mainDiscountPolicy") ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋ฌธ์๋ฅผ ์ฌ์ฉํ๊ธฐ์ ์ปดํ์ผ์ ํ์ ์ฒดํฌ๊ฐ ์๋๋ค. ์ปดํ์ผ ์ค์ ์ค๋ฅ๋ฅผ ์ก์ ์๊ฐ ์๋ค๋ ์๋ฏธ์ด๋ค.("mainnDiscountPolicy"๋ผ๊ณ ์คํ๋ฅผ ๋ด๋ ์ปดํ์ผ์ ๋๊ณ ๊ทธ ์ดํ์ Exception์ด ๋ฐ์ํ๋ค.) ์ด๋ฅผ ์ ๋ ธํ ์ด์ ์ ์ง์ ๋ง๋ค์ด์ ํด๊ฒฐํด๋ณด์ "mainDiscountPolicy"๋ฅผ Qualifier๋ก ๊ฐ์ง๋ @MainDiscountPolicy๋ผ๋ ์ ๋ ธํ ์ด์ ์ ์์ฑํ์๋ค. ์ด์ ์ฐ๋ฆฌ๋ @MainDiscountPolicy๋ฅผ ๊ฐ์ ธ๋ค๊ฐ ์ฌ์ฉํ๋ฉด ๋๋๋ฐ ์์๊ฐ์ด ์คํ๋ฅผ ๋ฐ์ํ๋ฉด ์ปดํ์ผ ์ ์ ์ค๋ฅ๋ฅผ ์ก์๋ผ ์ ์๊ฒ๋๋ค. ์ด์ OrderServiceImpl์ ์์ฑ์ ์ฃผ์ ์ ์ฐ๋ฆฌ๊ฐ ๋ง๋ ์ ๋ ธํ ์ด์ ์ ๋ฃ์ด์ฃผ๋ฉด ์คํ๋ง์ด ์ด๋ค ํ์ ์.. 2022. 4. 28. ์ด์ 1 2 3 4 5 6 ยทยทยท 12 ๋ค์