๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

spring43

Spring - ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ๋“ฑ๋ก๋œ ๋ชจ๋“  ๋นˆ ์กฐํšŒ //ApplicationContextInfoTest.java package hello.core.beanfind; import hello.core.AppConfig; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.AnnotationConfigApplicationContext; class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = new Anno.. 2023. 7. 9.
Spring - ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ //์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext๋Š” ์Šคํ”„๋ง ์ปจํ„ฐ์ด๋„ˆ์ด์ž, ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” XML์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์• ๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜์˜ ์ž๋ฐ” ์„ค์ • ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ฐธ๊ณ : ๋” ์ •ํ™•ํžˆ๋Š” ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ถ€๋ฅผ ๋•Œ BeanFactory , ApplicationContext ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ด์•ผ๊ธฐํ•œ๋‹ค. BeanFactory ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†์œผ๋ฏ€๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ ApplicationContext ๋ฅผ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ผ ํ•œ๋‹ค. 1. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ new AnnotationConfigAppl.. 2023. 7. 9.
Spring - ์ง€๊ธˆ๊นŒ์ง€์˜ ์ „์ฒด ํ๋ฆ„ ์ •๋ฆฌ ์ง€๊ธˆ๊นŒ์ง€์˜ ์ฝ”๋“œ ์ƒˆ๋กœ์šด ํ• ์ธ ์ •์ฑ… ๊ฐœ๋ฐœ ์ƒˆ๋กœ์šด ํ• ์ธ ์ •์ฑ… ์ ์šฉ๊ณผ ๋ฌธ์ œ์  (dip, ocp ์œ„๋ฐ˜) ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ (์ถ”์ƒํ™”์—๋งŒ ์˜์กด, ๊ตฌ์ฒดํ™”์—๋Š” ์˜์กด๋„ ์—†๋„๋ก) AppConfig ๋ฆฌํŒฉํ„ฐ๋ง (์ „์ฒด ์•ฑ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋”ฐ๋กœ appconfig๋กœ ๋นผ๋‘ ) ์ƒˆ๋กœ์šด ๊ตฌ์กฐ์™€ ํ• ์ธ ์ •์ฑ… ์ ์šฉ ์ƒˆ๋กœ์šด ํ• ์ธ ์ •์ฑ… ๊ฐœ๋ฐœ ๋‹คํ˜•์„ฑ ๋•๋ถ„์— ์ƒˆ๋กœ์šด ์ •๋ฅ  ํ• ์ธ ์ •์ฑ… ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ ์ž์ฒด๋Š” ์•„๋ฌด ๋ฌธ์ œ๊ฐ€ ์—†์Œ ์ƒˆ๋กœ์šด ํ• ์ธ ์ •์ฑ… ์ ์šฉ๊ณผ ๋ฌธ์ œ์  ์ƒˆ๋กœ ๊ฐœ๋ฐœํ•œ ์ •๋ฅ  ํ• ์ธ ์ •์ฑ…์„ ์ ์šฉํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ์ธ ์ฃผ๋ฌธ ์„œ๋น„์Šค ๊ตฌํ˜„์ฒด๋„ ํ•จ๊ป˜ ๋ณ€๊ฒฝํ•ด์•ผํ•จ ์ฃผ๋ฌธ ์„œ๋น„์Šค ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค์ธ DiscountPolicy ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๊ตฌ์ฒด ํด๋ž˜์Šค์ธ FixDiscountPolicy ๋„ ํ•จ๊ป˜ ์˜์กด -> DIP ์œ„๋ฐ˜ AppConfig ๋ฆฌํŒฉํ„ฐ๋ง ๊ตฌ์„ฑ .. 2023. 7. 7.
Spring - DIP, OCP๋ฅผ ์ง€ํ‚ค๋Š” ๋„๋ฉ”์ธ ์„œ๋น„์Šค ๊ธฐ์กด ์ฝ”๋“œ๋Š” ์ด๋ ‡๊ฒŒ ์ถ”์ƒํ™”์™€ ๊ตฌํ˜„์ฒด์— ๋ชจ๋‘ ์˜์กดํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ด๋ฅผ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด์„œ ๋ถ„๋ฆฌํ•ด์ฃผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ๋˜๋ฉด์„œ MemberServiceImpl์—์„œ๋Š” MemoryMemberRepository()์ธ ๊ตฌํ˜„์ฒด์— ๋Œ€ํ•ด์„œ๋Š” ์˜์กดํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, DIP๋ฅผ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š๊ฒŒ๋œ๋‹ค. ๋Œ€์‹  AppConfig์—์„œ MemberService์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ทธ์˜ ๊ตฌํ˜„์ฒด์ธ MemberServiceImpl์„ ๋ถ€๋ฅด๊ณ , ๊ตฌํ˜„์ฒด๋ฅผ ๋ถ€๋ฅผ๋•Œ ์ธ์ˆ˜๋ฅผ ํ†ตํ•ด MemoryMemberRepository๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋„ฃ์–ด์ฃผ๊ฒŒ ๋œ๋‹ค. (์ƒ์„ฑ์ž ์ฃผ์ž…) ์„ค๊ณ„ ๋ณ€๊ฒฝ์œผ๋กœ MemberServiceImpl ์€ MemoryMemberRepository ๋ฅผ ์˜์กดํ•˜์ง€ ์•Š๋Š”๋‹ค! ๋‹จ์ง€ MemberRepository ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์˜์กดํ•œ๋‹ค. MemberServiceImpl ์ž…์žฅ.. 2023. 7. 7.