๐’๐ฉ๐ซ๐ข๐ง๐ 

์ธํ”„๋Ÿฐ ๊น€์˜ํ•œ๋‹˜์˜ ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ ๊ฐ•์˜ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ๋‹ค์–‘ํ•œ ๋นˆ ์Šค์ฝ”ํ”„์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํŠน์„ฑ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ๋นˆ ์Šค์ฝ”ํ”„๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜์ง€๋งŒ, ํ”„๋กœํ† ํƒ€์ž… ๋นˆ๊ณผ ์‹ฑ๊ธ€ํ†ค ๋นˆ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์ด ์žˆ๋‹ค. ๋จผ์ € ์•„๋ž˜์™€ ๊ฐ™์ด ๋™์ž‘ํ•˜๋Š” ํ”„๋กœํ† ํƒ€์ž… ๋นˆ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. 1. ํด๋ผ์ด์–ธํŠธ A๊ฐ€ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ํ”„๋กœํ† ํƒ€์ž… ๋นˆ์„ ์š”์ฒญํ•œ๋‹ค. 2. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ”„๋กœํ† ํƒ€์ž… ๋นˆ ์ธ์Šคํ„ด์Šค(PrototypeBean@x01)๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค. PrototypeBean@x01.count: 0 3. ํด๋ผ์ด์–ธํŠธ A๊ฐ€ addCount()๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ count ํ•„๋“œ๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. PrototypeBean@x01.count: 1 ์œ„์™€ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ, ํด..
์ธํ”„๋Ÿฐ ๊น€์˜ํ•œ๋‹˜์˜ ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ ๊ฐ•์˜ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. 1. ๋นˆ ์Šค์ฝ”ํ”„๋ž€? ๋นˆ ์Šค์ฝ”ํ”„๋ž€, ๋นˆ์ด ์ƒ์„ฑ๋˜์–ด ์†Œ๋ฉธ๋˜๊ธฐ๊นŒ์ง€์˜ ๋ฒ”์œ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€๋Š” ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋œฐ ๋•Œ ์Šคํ”„๋ง ๋นˆ์ด ์ƒ์„ฑ๋˜๊ณ , ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ ํ•จ๊ป˜ ์†Œ๋ฉธํ•œ๋‹ค๊ณ  ๋ฐฐ์› ๋‹ค. ํ•˜์ง€๋งŒ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด ๋‹ค์–‘ํ•œ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง„ ๋นˆ์ด ํ•„์š”ํ•ด์ง„๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์— ๋Œ€ํ•ด ๋กœ๊ทธ๋ฅผ ์ฐ์œผ๋ ค๋ฉด ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ ๋นˆ์„ ์ƒ์„ฑํ•˜๊ณ , ์š”์ฒญ์ด ์ข…๋ฃŒ๋˜๋ฉด ๋นˆ์„ ์†Œ๋ฉธ์‹œ์ผœ์•ผ ํ•œ๋‹ค. ์ด์ฒ˜๋Ÿผ ๋นˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ์‹ฑ๊ธ€ํ†ค๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ œ์–ดํ•  ํ•„์š”๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ๋นˆ ์Šค์ฝ”ํ”„๋ฅผ ์ง€์›ํ•œ๋‹ค. ๋นˆ ์Šค์ฝ”ํ”„์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. ์‹ฑ๊ธ€ํ†ค: ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ ์ƒ์„ฑ๋˜์–ด ์ข…๋ฃŒ๋  ๋•Œ ์†Œ๋ฉธ๋˜๋Š”, ์Šคํ”„..
์ธํ”„๋Ÿฐ ๊น€์˜ํ•œ๋‹˜์˜ ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ ๊ฐ•์˜ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. 1. ์ดˆ๊ธฐํ™” ์ž‘์—…์˜ ํ•„์š”์„ฑ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ปค๋„ฅ์…˜์€ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋Š” ๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์—, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์™€ DB ์‚ฌ์ด์˜ ์ปค๋„ฅ์…˜์„ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•ด๋‘”๋‹ค. ๊ทธ๋ฆฌ๊ณ  DB ์—ฐ๊ฒฐ ์š”์ฒญ์ด ์˜ค๋ฉด ์—ฐ๊ฒฐํ•ด๋‘์—ˆ๋˜ ์ปค๋„ฅ์…˜์„ ๋นŒ๋ ค์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. ์ด ์ปค๋„ฅ์…˜์€ ๋ณดํ†ต ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋˜๋Š” ์‹œ์ ์— ์ƒ์„ฑ๋˜๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ข…๋ฃŒ๋  ๋•Œ ํ•จ๊ป˜ ์ข…๋ฃŒ๋œ๋‹ค. ๋•Œ๋ฌธ์— ์ดˆ๊ธฐํ™”์™€ ์ข…๋ฃŒ ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค. ๐Ÿ’ก์ดˆ๊ธฐํ™” ์ž‘์—…์„ ์ƒ์„ฑ์ž์—์„œ ์ง„ํ–‰ํ•˜๋ฉด ์•ˆ๋˜๋Š” ์ด์œ ? ์ƒ์„ฑ์ž๋Š” ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๊ฐ์ฒด ์ƒ์„ฑ์„ ์œ„ํ•œ ๋ฉ”์„œ๋“œ์ด๋‹ค. ์ƒ์„ฑ์ž๋Š” ์ดˆ๊ธฐํ™” ์ž‘์—…๋ณด๋‹จ ๊ฐ์ฒด ์ƒ์„ฑ์— ์ง‘์ค‘ํ•˜๋Š” ๊ฒƒ์ด SRP์— ๋” ์•Œ๋งž๊ณ , ์œ ์ง€๋ณด์ˆ˜์ ์ธ ์ธก๋ฉด์—์„œ ์ข‹๋‹ค. ์ดˆ๊ธฐํ™” ์ž‘์—…์—๋Š” ์™ธ๋ถ€ ์ปค๋„ฅ์…˜ ์—ฐ๊ฒฐ ๋“ฑ ๋ฌด๊ฒ๊ณ  ์˜ˆ์™ธ๋ฅผ..
์ธํ”„๋Ÿฐ ๊น€์˜ํ•œ๋‹˜์˜ ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ ๊ฐ•์˜ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…์ด๋ž€, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์‹œ์ ์— ์™ธ๋ถ€์—์„œ ์‹ค์ œ ๊ตฌํ˜„ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด์ „์— ์ œ์–ด์˜ ์—ญ์ „๊ณผ ํ•จ๊ป˜ ์•Œ์•„๋ณธ ์ ์ด ์žˆ์—ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๊ตฌํ˜„ ๊ฐ์ฒด๋ฅผ ์–ด๋–ป๊ฒŒ ์ „๋‹ฌํ• ๊นŒ? ํฌ๊ฒŒ 4๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. 1. ์ƒ์„ฑ์ž ์ฃผ์ž… ๋ง ๊ทธ๋Œ€๋กœ ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•ด์„œ ์˜์กด๊ด€๊ณ„๋ฅผ ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ, @Autowired๊ฐ€ ๋ถ™์–ด์žˆ์œผ๋ฉด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—์„œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ํƒ€์ž…์˜ ๋นˆ์„ ์ฐพ์•„ ์ƒ์„ฑ์ž์— ๋„ฃ์–ด์ค€๋‹ค. @Component public class OrderServiceImpl implements OrderService { private final DiscountPolicy discou..
์ธํ”„๋Ÿฐ ๊น€์˜ํ•œ๋‹˜์˜ ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ ๊ฐ•์˜ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. 1. ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์ด๋ž€? @Configuration public class AppConfig { @Bean public OrderService orderService() { System.out.println("call orderService()"); return new OrderServiceImpl(discountPolicy()); } @Bean public DiscountPolicy discountPolicy() { System.out.println("call discountPolicy()"); return new FixDiscountPolicy(); } } ์ง€๊ธˆ๊นŒ์ง€๋Š” ์„ค์ • ์ •๋ณด ํŒŒ์ผ์— ๋“ฑ๋กํ•  ์Šคํ”„๋ง ๋นˆ์„ ์ง์ ‘ ๋‚˜์—ดํ•ด..
์ธํ”„๋Ÿฐ ๊น€์˜ํ•œ๋‹˜์˜ ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ ๊ฐ•์˜ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. 1. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์ด๋ž€? ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์ด๋ž€ ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋”ฑ 1๊ฐœ๋งŒ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ƒ์„ฑ์ž๋ฅผ ๋ช‡ ๋ฒˆ ํ˜ธ์ถœํ•˜๋”๋ผ๋„ ์ธ์Šคํ„ด์Šค๋Š” ๋”ฑ 1๊ฐœ๋งŒ ์ƒ์„ฑ๋˜๊ณ , ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์ดํ›„์— ํ˜ธ์ถœ๋˜๋Š” ์ƒ์„ฑ์ž๋Š” ์ด์ „์— ์ƒ์„ฑํ•ด๋‘” ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ, ์ฃผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์ด ๋งŽ์ด ์“ฐ์ธ๋‹ค. class Singleton { private static final Singleton singleton = new Singleton(); public static Singleton getInstance(){ return singleton; } } singleton ํ•„๋“œ๋Š” static ๋ฉค๋ฒ„๋กœ ์„ค์ •ํ•˜์—ฌ ..
gorapaduckoo
'๐’๐ฉ๐ซ๐ข๐ง๐ ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)