๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT/Spring

[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ] ์ธํ”„๋Ÿฐ ๊ฐ•์˜ ์ •๋ฆฌ(๊ฐ์ฒด ์ง€ํ–ฅ ์›๋ฆฌ ์ ์šฉ - AppConfig ๋ฆฌํŒฉํ„ฐ๋ง)

by YeonBu 2023. 10. 21.
728x90

/* ์ด ๊ธ€์€ ๊น€์˜ํ•œ๋‹˜์˜ ๊ฐ•์˜๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ•˜๋ ค๊ณ  ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

   ๊ฐœ์ธ์ ์ธ ๊ณต๋ถ€๋ฅผ ์œ„ํ•ด ์˜ฌ๋ฆฌ๋Š” ๊ธ€์ด๋ฏ€๋กœ ์ค‘๊ฐ„ ์ค‘๊ฐ„ ์ฝ”๋“œ๋Š” ์ƒ๋žต๋˜์—ˆ์Šต๋‹ˆ๋‹ค. */

 

 

์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

์Šคํ”„๋ง ์ž…๋ฌธ์ž๊ฐ€ ์˜ˆ์ œ๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€๋ฉด์„œ ์Šคํ”„๋ง์˜ ํ•ต์‹ฌ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ณ , ์Šคํ”„๋ง ๊ธฐ๋ณธ๊ธฐ๋ฅผ ํ™•์‹คํžˆ ๋‹ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ณ , ์„ฑ์žฅํ•˜๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ณด์„ธ์š”! ๐Ÿ“ข

www.inflearn.com

 

 

 

 

 

AppConfig ๋ฆฌํŒฉํ„ฐ๋ง

 

 

1. ๋ฆฌํŒฉํ„ฐ๋ง ์ „

 

 

appConfig

 

public class AppConfig {

    public MemberService memberService() {

        return new MemberServiceImpl(new MemoryMemberRepository());

    }

    public OrderService orderService() {

        return new OrderServiceImpl(new MemoryMemberRepository(), new FixDiscountPolicy());

    }

}

 

โ—พ ํ˜„์žฌ appConfig๋ฅผ ๋ณด๋ฉด ์ค‘๋ณต์ด ์žˆ๊ณ , ์—ญํ• ์— ๋”ฐ๋ฅธ ๊ตฌํ˜„์ด ์ž˜ ๋ณด์ด์ง€ ์•Š์Œ

โ—พ ์—ญํ• ์„ ๋“œ๋Ÿฌ๋‚ด๊ธฐ ์œ„ํ•ด์„œ ๋ฉ”์†Œ๋“œ๋ฅผ ์ถ”์ถœํ•ด์„œ ๋ฆฌํŒฉํ† ๋ง ํ•จ

 

1. ์ถ”์ถœํ•  ๋ถ€๋ถ„์„ ๋ธ”๋Ÿญ์œผ๋กœ ์ง€์ •ํ•œ ํ›„ Ctrl + Alt + M
2. ์ด๋ฆ„์„ ์ถ”์ฒœํ•ด์ฃผ๋ฉด ์›ํ•˜๋Š” ์ด๋ฆ„ ์„ ํƒํ•˜๊ณ  ์—”ํ„ฐ
3. ์ด๋ฆ„์„ ์ง์ ‘ ์ง€์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ด๋ฆ„ ์ถ”์ฒœ ๋‹จ๊ณ„์—์„œ Alt + Shift + O โž” Ctrl + Alt + M ๋ˆ„๋ฅด๋ฉด ์ด ํ™”๋ฉด์ด ๋œธ
4. Replace ์„ ํƒ(์ค‘๋ณต๋œ ๋ถ€๋ถ„ ์•Œ์•„์„œ ๊ณ ์ณ์คŒ)

 

 

 

2. ๋ฆฌํŒฉํ„ฐ๋ง ํ›„

 

appConfig

 

public class AppConfig {

    public MemberService memberService() {
        return new MemberServiceImpl(memberRepository());
    }

    public OrderService orderService() {
        return new OrderServiceImpl(memberRepository(), discountPolicy());
    }

    public MemberRepository memberRepository() {
        return new MemoryMemberRepository();
    }

    public DiscountPolicy discountPolicy() {
        return new FixDiscountPolicy();
    }

}

 

โ—พ new MemoryMemberRepository() ๋ถ€๋ถ„์˜ ์ค‘๋ณต์ด ์ œ๊ฑฐ๋˜์—ˆ๋‹ค. ์ด์ œ Repository๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค๋ฉด ํ•œ ๋ถ€๋ถ„๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋œ๋‹ค.

โ—พ appConfig์˜ ์—ญํ• ์ด ํ•œ ๋ˆˆ์— ๋“ค์–ด์˜จ๋‹ค.

 

๐Ÿ’ก ๊ถ๊ธˆ์ฆ 1

: ์ง์ ‘ ์˜์กด์„ฑ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ(new๋กœ ๊ฐ์ฒด ์ƒ์„ฑ)๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์˜์กด์„ฑ์„ ์ƒ์„ฑํ•˜๋Š”๊ฒƒ์˜ ์ฐจ์ด

 

โ—พ ์ง์ ‘ ์˜์กด์„ฑ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ :

- ๋งŒ์ผ Repository๋ฅผ DbMemberRepository๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค๋ฉด `new MemoryMemberRepository()` ๋กœ ์ง์ ‘ ์ƒ์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ์ฐพ์•„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋ฉฐ, ๋‚˜์ค‘์— ๋ฒ”์œ„๊ฐ€ ์ปค์ง„๋‹ค๋ฉด ๋‹ค๋ฅธ ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค.

- ์ง์ ‘ ์˜์กด์„ฑ์„ ์ƒ์„ฑํ•˜๋ฉด ํด๋ž˜์Šค๊ฐ€ ํ•ด๋‹น ์˜์กด์„ฑ์— ๊ฐ•ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋˜์–ด ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ๋‚ฎ์•„์ง€๊ณ  ์ฝ”๋“œ ๋ณ€๊ฒฝ๊ณผ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›Œ ์ง„๋‹ค.

 

โ—พ ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์˜์กด์„ฑ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ : 

- ๋งŒ์ผ Repository๋ฅผ DbMemberRepository๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค๋ฉด `memberRepository()`์˜ ๋ฉ”์†Œ๋“œ๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋œ๋‹ค. ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

- ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•˜๋ฉด MemberServiceImpl ํด๋ž˜์Šค๋Š” `memberRepository()`๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” `MemberRepository` ์ธํ„ฐํŽ˜์ด์Šค์— ์˜์กดํ•˜๋ฏ€๋กœ ์ถ”์ƒํ™”๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ๊ตฌํ˜„์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โž” ๊ฒฐ๋ก  : ์˜์กด์„ฑ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ  ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์„ ์ค€์ˆ˜ํ•˜๋ฉฐ ์œ ์—ฐ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์— ์šฉ์ดํ•˜๋‹ค.

 

 

 

 

 

๋ฐ˜์‘ํ˜•

'IT > Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ] ์ธํ”„๋Ÿฐ ๊ฐ•์˜ ์ •๋ฆฌ(๊ฐ์ฒด ์ง€ํ–ฅ ์›๋ฆฌ ์ ์šฉ - IoC, DI, ๊ทธ๋ฆฌ๊ณ  ์ปจํ…Œ์ด๋„ˆ)  (1) 2023.10.22
[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ] ์ธํ”„๋Ÿฐ ๊ฐ•์˜ ์ •๋ฆฌ(๊ฐ์ฒด ์ง€ํ–ฅ ์›๋ฆฌ ์ ์šฉ - ์ƒˆ๋กœ์šด ๊ตฌ์กฐ์™€ ํ• ์ธ ์ •์ฑ… ์ ์šฉ, ์ข‹์€ ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์˜ 5๊ฐ€์ง€ ์›์น™ ์ ์šฉ)  (0) 2023.10.21
[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ] ์ธํ”„๋Ÿฐ ๊ฐ•์˜ ์ •๋ฆฌ(๊ฐ์ฒด ์ง€ํ–ฅ ์›๋ฆฌ ์ ์šฉ - ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ)  (0) 2023.10.20
[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ] ์ธํ”„๋Ÿฐ ๊ฐ•์˜ ์ •๋ฆฌ(๊ฐ์ฒด ์ง€ํ–ฅ ์›๋ฆฌ ์ ์šฉ - ์ƒˆ๋กœ์šด ํ• ์ธ ์ •์ฑ… ๊ฐœ๋ฐœ, ์ ์šฉ, ๋ฌธ์ œ์ )  (2) 2023.10.20
[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ] ์ธํ”„๋Ÿฐ ๊ฐ•์˜ ์ •๋ฆฌ(์˜ˆ์ œ๋งŒ๋“ค๊ธฐ - ์ฃผ๋ฌธ๊ณผ ํ• ์ธ ๋„๋ฉ”์ธ ์„ค๊ณ„, ๊ฐœ๋ฐœ, ์‹คํ–‰, ํ…Œ์ŠคํŠธ)  (0) 2023.10.20