Spring/๐Ÿ“—[spring] ํ•ต์‹ฌ์›๋ฆฌ-๊ธฐ๋ณธํŽธ

ํšŒ์› ๋„๋ฉ”์ธ ์‹คํ–‰๊ณผ ํ…Œ์ŠคํŠธ

1son 2023. 3. 9. 08:51

์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ํšŒ์› ๋„๋ฉ”์ธ์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ๋งŒ๋“ค์–ด๋ณผ๊ฒŒ์š” 

์ด ๋ถ€๋ถ„์ด ๋‹ค ๊ฐœ๋ฐœ์ด ๋์Šต๋‹ˆ๋‹ค. 

 

 

์šฐ๋ฆฌ๋Š” ์ด ๊ทธ๋ฆผ์„ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. 

 

์‹ค์ œ ๋Ÿฐํƒ€์ž„์— ๋™์ž‘์„ ํ•˜๋ฉด, ํด๋ผ์ด์–ธํŠธ๋Š” MemberServiceImpl์ด๋ผ๋Š” ํšŒ์› ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉ์„ ํ•˜๊ฒŒ ๋˜๊ณ , 

๊ทธ ๋‹ค์Œ์— ํšŒ์› ์„œ๋น„์Šค๋Š” ๋ฉ”๋ชจ๋ฆฌ ํšŒ์› ์ €์žฅ์†Œ, MemoryMemberRepository new ํ•ด๊ฐ€์ง€๊ณ  ๋„ฃ์—ˆ๋˜๊ฑฐ ์ƒ๊ฐ๋‚˜์ฃ ?

 

์‹ค์ œ ์ธ์Šคํ„ด์Šค๊ฐ„ ๊ทธ๋ฆผ์€ ์ด๋ ‡๊ฒŒ ๋œ๋‹ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. 


ํšŒ์› ํด๋ž˜์Šค๊ฐ„ ๋‹ค์ด์–ด๊ทธ๋žจ์€ ์ •์ ์ธ๊ฑฐ๊ณ , 

๊ฐ์ฒด ๋‹ค์ด์–ด๊ทธ๋žจ์€ ๋™์ ์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 

 

new ํ•ด์„œ ์‹ค์ œ ๋“ค์–ด๊ฐ€์•ผ ๊ทธ๊ฑธ ์•Œ ์ˆ˜ ์žˆ์ž–์•„์š” 

 

 

์ด์ œ ์‹ค์ œ ์‹คํ–‰ํ•˜๊ณ  ํ…Œ์ŠคํŠธ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

MemberApp์„ ์ƒ์„ฑํ•˜๊ณ  

psvm์„ ์น˜๊ณ  ์—”ํ„ฐ๋ฅผ ์น˜๋ฉด ์ž๋™์œผ๋กœ ์ƒ๊ธด๋‹ค!

 

์—ฌ๊ธฐ์„œ ์ž˜๋˜๋Š”์ง€ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ…Œ์ŠคํŠธ ํ•ด๋ณผ๊ฒŒ์š” 

 

MemberService๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ, newํ•ด์„œ MemberServiceImpl์„ ์„ ํƒ์„ ํ•ด์คŒ

ctrl+Alt+v

public class MemberApp {
    public static void main(String[] args) {
        MemberService memberService = new MemberServiceImpl();
        //MemberService๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ, newํ•ด์„œ MemberServiceImpl์„ ์„ ํƒ์„ ํ•ด์คŒ

        Member member = new Member(1L, "memberA", Grade.VIP);
        //Ctrl+ Alt + v

        memberService.join(member);
        //joinํ•ด์„œ ๋„ฃ์œผ๋ฉด, ํšŒ์›๊ฐ€์ž…์ด ๋˜๊ฒ ์ฃ  
    }
}

id๊ฐ€ 1์ด๊ณ  (Longํƒ€์ž…์ด๋ผ์„œ l๋ถ™์—ฌ์คŒ)

์ด๋ฆ„์€ memberA๋ผ๊ณ  ํ•˜๊ณ  ๋“ฑ๊ธ‰์€ vip๋‹ค. 

 

์ด ์‚ฌ๋žŒ์ด ์ œ๋Œ€๋กœ ๊ฐ€์ž…์ด ๋˜์—ˆ๋Š” ์ง€ ํ™•์ธํ•ด๋ณด๋ฉด ๋˜๊ฒ ์ฃ  

 

Member findMember = memberService.findMember(1L);

๊ฐ€์ž…ํ•œ member์™€ findMember๊ฐ€ ๋˜‘๊ฐ™์œผ๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š”๋Œ€๋กœ ๋˜์—ˆ๊ฒ ์ฃ 

 

๋‹จ์ˆœํ•˜๊ฒŒ ์ฐ์–ด๋ณผ๊ฒŒ์š” 

 

soutv ์น˜๋ฉด ์œ„์—๊ฑฐ ๋˜‘๊ฐ™์ด ๋‚˜์˜จ๋‹ค. 

public class MemberApp {
    public static void main(String[] args) {
        MemberService memberService = new MemberServiceImpl();
        //MemberService๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ, newํ•ด์„œ MemberServiceImpl์„ ์„ ํƒ์„ ํ•ด์คŒ

        Member member = new Member(1L, "memberA", Grade.VIP);
        //Ctrl+ Alt + v

        memberService.join(member);
        //joinํ•ด์„œ ๋„ฃ์œผ๋ฉด, ํšŒ์›๊ฐ€์ž…์ด ๋˜๊ฒ ์ฃ 

        Member findMember = memberService.findMember(1L);
        System.out.println("new member = " + member.getName());
        System.out.println("find Member= " + findMember.getName());
        
    }
}

์ง„์งœ ์ˆœ์ˆ˜ํ•œ ์ž๋ฐ”๋กœ๋งŒ ๊ฐœ๋ฐœ์„ ํ•œ๊ฒƒ

๊ทธ๋Ÿฐ๋ฐ ์ด๋Ÿฐ main๋ฉ”์„œ๋“œ๋กœ ํ…Œ์ŠคํŠธ ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์•„๋‹˜

junit์ด๋ผ๋Š” ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. 

 

 

MemberServiceTest๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. 

 

 

๋…น์ƒ‰๋ถˆ์ด ๋œจ๋ฉด์„œ ์„ฑ๊ณต!

 

์š”์ฆ˜ ํ˜„๋Œ€์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœํ•˜๋ ค๋ฉด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ํ•„์ˆ˜์ž„ ์„ ํƒ์ด ์•„๋‹ˆ์•ผ 

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ๋ฐฉ๋ฒ•์„ ํ•„์ˆ˜๋กœ ์•„์…”์•ผ ํ•จ

 

๊ทธ๋งŒํผ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž˜ ์ž‘์„ฑํ•˜๋Š” ๊ฒŒ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. 

 

ํšŒ์› ๋„๋ฉ”์ธ ์„ค๊ณ„์˜ ๋ฌธ์ œ์ 

- ์ด ์ฝ”๋“œ์˜ ์„ค๊ณ„์ƒ ๋ฌธ์ œ์ ์€ ๋ฌด์—‡์ผ๊นŒ์š”?

- ๋‹ค๋ฅธ ์ €์žฅ์†Œ๋กœ ๋ณ€๊ฒฝํ•  ๋•Œ OCP์›์น™์„ ์ž˜ ์ค€์ˆ˜ํ• ๊นŒ์š”?

- DIP๋ฅผ ์ž˜ ์ง€ํ‚ค๊ณ  ์žˆ์„๊นŒ์š”?

 

->  ์˜์กด๊ด€๊ณ„๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ตฌํ˜„๊นŒ์ง€ ๋ชจ๋‘ ์˜์กดํ•˜๋Š” ๋ฌธ์ œ์ ์ด ์žˆ์Œ

    -> ์ฃผ๋ฌธ๊นŒ์ง€ ๋งŒ๋“ค๊ณ ๋‚˜์„œ ๋ฌธ์ œ์ ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์„ ์„ค๋ช…ํ•˜๊ฒ ์Œ!

 

DIP๋ฅผ ์˜์กดํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ,,,

 

 

 

 

 

 

https://link.coupang.com/a/UtP2e

 

์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ:์Šคํ”„๋ง ๋ฐ์ดํ„ฐ ์˜ˆ์ œ ํ”„๋กœ์ ํŠธ๋กœ ๋ฐฐ์šฐ๋Š” ์ „์ž์ •๋ถ€ ํ‘œ์ค€ ๋ฐ์ดํ„ฐ๋ฒ ์ด

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."