๐Ÿชฝ

"ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊น€์˜ํ•œ ์„ ์ƒ๋‹˜์˜ Spring MVC 1์„ ์œ„์ฃผ๋กœ ๊ณต๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค."

 

 

 

โ–ถ MemberRepositoyTest.class (๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ)

Member member1 = new Member("hello", 20);
Member member2 = new Member("spring", 10);

Member savedMember1 = memberRepository.save(member1);
Member savedMember2 = memberRepository.save(member2);
member1์€ hello๋ผ๋Š” username๊ณผ 20์ด๋ผ๋Š” age๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด ๋ฐ์ดํ„ฐ๋ฅผ member1๋กœ ํฌ์žฅํ–ˆ๋Š”๋ฐ save๋กœ ๋„˜์–ด๊ฐ€๋ฉด member1์€ member๋ผ๋Š” ํฌ์žฅ์ง€๋กœ ๋ฐ”๋€๋‹ค. 

 

 

 

โ–ถ MemberRepositoy.class

public Member save(Member member) {
        member.setId(++sequence);
        store.put(member.getId(), member);
        return member;
    }
save(Member member) ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค. ์ด ์ฝ”๋“œ๊ฐ€ member๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ธ์ž๋ฅผ ๋ฐ›๊ฒ ๋‹ค๋ผ๋Š” ๊ฒƒ์ด๋‹ค. member1์€ save์—์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ๋™์•ˆ member๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„๋‹ค. 

setId(++sequence)๋Š” sequence๊ฐ’์„ ํ•˜๋‚˜ ์ฆ๊ฐ€์‹œํ‚จ ํ›„ id์— ๊ฐ’์„ ๋„ฃ๋Š”๋‹ค. ์—ฌ๊ธฐ์„œ member.์ด ๋ถ™๋Š” ์ด์œ ๋Š” ์–ด๋А ๊ฐ์ฒด์˜ id์ธ์ง€๋ฅผ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•จ์ด๋‹ค. 

 

 

Q. return member๊ฐ€ ๋ฌด์Šจ ๋ง์ผ๊นŒ?

A. ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค์—์„œ member1์„ ์ €์žฅํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค. ์ด๋•Œ member1์€ id ๊ฐ’์ด ์—†๋Š” ์ƒํƒœ์ด๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ง€๋‹Œ member1์ด  save ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด id๊ฐ’์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ทธ id ๊ฐ’์„ ๋‹ค์‹œ ํ˜ธ์ถœ๋˜์—ˆ๋˜ ๊ณณ์— ๋Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. 

 

 

 

Q. return member๋ฅผ ํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ญ˜๊นŒ?

A. ์‹ค์ œ ์ €์žฅ๋œ id ๊ฐ’์„ ๋ฐ”๋กœ ํ™•์ธํ•˜๊ฑฐ๋‚˜, id ๊ฐ’์„ ๋ฐ›์€ ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฅธ ๊ณณ์— ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜, ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ๊ฑฐ๋‚˜, ์ถ”๊ฐ€ ์ž‘์—…์— ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ํŽธ์˜์„ฑ์„ ์œ„ํ•ด ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•œ๋‹ค

์˜ˆ๋กœ ์ƒํ’ˆ์„ ์ฃผ๋ฌธํ•˜๋ฉด ์ฃผ๋ฌธ ๋ฒˆํ˜ธ๊ฐ€ ๋ฐœ๊ธ‰๋˜๋Š”๋ฐ, ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ๊ฐ™๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. ์ฃผ๋ฌธ์ด ๋“ค์–ด์˜ค๋ฉด ์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ ์ฃผ๋ฌธ์„ ์ €์žฅํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฃผ๋ฌธ์— ๋Œ€ํ•œ ๊ณ ์œ  ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•œ ํ›„, ์‚ฌ์šฉ์ž ํ™”๋ฉด์— ์ฃผ๋ฌธ ๋ฒˆํ˜ธ๊ฐ€ ๋ณด์ด๋„๋ก ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ด๋•Œ ์ฃผ๋ฌธ ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์ธ ๊ฐ์ฒด๋ฅผ returnํ•˜๋ฉด ๋ณ„๋„์˜ ์ถ”๊ฐ€์ฝ”๋“œ ์—†์ด ํ•ด๋‹น ๊ฐ์ฒด์˜ ๋ฒˆํ˜ธ๋ฅผ ํ™”๋ฉด์— ๋ณด์ด๋„๋ก ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

 

 

โ–ถ MemberRepositoyTest.class (๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ)

Member findMember = memberRepository.findById(savedMember1.getId());
assertThat(findMember).isEqualTo(savedMember1);
return์œผ๋กœ id๊ฐ€ ๋ถ€์—ฌ๋œ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ–ˆ๋‹ค. ๋ฐ˜ํ™˜๊ฐ’์ด savedMember1์— ์ €์žฅ์ด ๋˜๊ณ  id๋ฅผ ๋ถ€์—ฌ๋ฐ›์•˜์œผ๋‹ˆ getId( )๋กœ id๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด findById์— id๋ฅผ ๋“ค๊ณ ๊ฐ€์„œ ์ด id์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ฌ๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ ๋‚˜์˜จ ๋ฐ์ดํ„ฐ๋ฅผ findMember์— ๋„ฃ์€ ํ›„ ๋‚ด๊ฐ€ ์ง€๊ธˆ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” savedMember1๊ณผ id๋ฅผ ๋“ค๊ณ ๊ฐ€์„œ ๋ฐ›์•„์˜จ findMember๊ฐ€ ๊ฐ™์€์ง€ ๋ฌป๋Š”๋‹ค.

๋งŒ์•ฝ retrun member๋ฅผ ์•ˆํ–ˆ๋‹ค๋ฉด, MemberRepository์— ์žˆ๋Š” Member savedMember1 = memberRepository.save(member1);์˜ savedMember1์€ ๋Œ๋ ค๋ฐ›์€ ๊ฐ’์ด ์—†์œผ๋‹ˆ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธฐ๊ณ  ๋‹น์—ฐํžˆ ๊ฐ’์„ ๋น„๊ตํ•˜์ง€๋„ ๋ชปํ•œ๋‹ค.

 

'๐Ÿงธ ์™œ ๊ทธ๋Ÿฐ๊ฑธ๊นŒโ”' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

1. ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„์ฒด  (5) 2024.09.26

 

 

๐Ÿชฝ

"ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊น€์˜ํ•œ ์„ ์ƒ๋‹˜์˜ ์Šคํ”„๋ง ๊ธฐ๋ณธํŽธ์„ ์œ„์ฃผ๋กœ ๊ณต๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค."

 

 

 

โ–บ ์ธํ„ฐํŽ˜์ด์Šค (๊ธฐ๋ณธ ์„ค๊ณ„๋„)

public interface MemberRepository {

    void save(Member member);

    Member findById(Long memberId);

}
// ์ถœ์ฒ˜: 1)๊น€์˜ํ•œ์˜ ์Šคํ”„๋ง ๊ธฐ๋ณธํŽธ

 

  • public interface๋ผ๊ณ  ์„ ์–ธํ•˜๋ฉด ๊ทธ๊ฒƒ์ด ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋œ๋‹ค.
  • ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ถ”์ƒํ™” ํด๋ž˜์Šค๋กœ ์ผ๋ฐ˜์ ์ธ ๋ฉ”์„œ๋“œ, ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ ๊ตฌ์„ฑ์›(์•„๋ž˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ)์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค.
  • ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ถ”์ƒ๋ฉ”์„œ๋“œ(๋งŒ๋“ค๋‹ค ๋งŒ ๊ฒƒ ๊ฐ™์€ ๋ฉ”์„œ๋“œ)์™€ ์ƒ์ˆ˜(final์„ ์ด์šฉํ•˜์—ฌ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์–ด๋–ค ๊ฐ’์„ ๋งŒ๋“œ๋Š” ๊ฒƒ)๋งŒ ๊ฐ€์ง„๋‹ค.
  • ์ถ”์ƒ๋ฉ”์„œ๋“œ๋Š” public abstruct - ๋กœ ์‹œ์ž‘ํ•˜์ง€๋งŒ, ์œ„์˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ƒ๋žตํ•ด๋„ ๋ฌด๊ด€ํ•˜๋‹ค.
  • ์ƒ์ˆ˜๋Š” public static final -๋กœ ์‹œ์ž‘ํ•˜์ง€๋งŒ, ์ƒ๋žต๊ฐ€๋Šฅํ•˜๋‹ค. 
  • ์‰ฝ๊ฒŒ ๋งํ•ด ๋ถˆ์™„์ „ํ•˜๋ฏ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ๋†ˆ์ด ํ•„์š”ํ•˜๋‹ค!

 

  • ํ•œ ํด๋ž˜์Šค ํ˜น์€ ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์— ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ค์ค‘ ์ƒ์†์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
public interface Dog extends Animal, Pet {
    void bark();
}

 

class Cat implements Animal, Pet {

    public void cry() {
        System.out.println("๋ƒ์˜น๋ƒ์˜น!");
    }

    public void play() {
        System.out.println("์ฅ ์žก๊ธฐ ๋†€์ดํ•˜์ž~!");
    }
// ์ถœ์ฒ˜: 3)TCP School

 

 

 

โ–บ ๊ตฌํ˜„์ฒด (๊ตฌ์ฒด์ ์ธ ์„ค๊ณ„๋„)

@Component
public class MemoryMemberRepository implements MemberRepository{

    private static Map<Long, Member> store = new HashMap<>();

    @Override
    public void save(Member member) {
        store.put(member.getId(), member);
    }

    @Override
    public Member findById(Long memberId) {
        return store.get(memberId);
    }

 

  • implements๋ฅผ ํ†ตํ•ด ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์†์„ ๋ฐ›๋Š”๋‹ค.
  • ๊ตฌ์ฒด์ ์ธ ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.
  • ๊ฐ™์€ ํด๋ž˜์Šค ๋‚ด์—์„œ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„์ฒด๋ฅผ ํ•œ ๋ฒˆ์— ๋„ฃ์„ ์ˆ˜๋„ ์žˆ๋‹ค. 

 


 

 

Q. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“  ์ด์œ ๋Š”?

A. ์—ฌ๋Ÿฌ ์ด์œ ๊ฐ€ ์žˆ๋Š”๋ฐ, ๊ฐ€์žฅ ํฐ ๊ฒƒ์€ ์˜์กด์„ฑ ๋ฌธ์ œ์ด๋‹ค. ํด๋ž˜์Šค๋Š” ์„œ๋กœ ์–ฝํ˜€์žˆ๋‹ค. ํ•œ ํด๋ž˜์Šค์— ํ•œ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํšŒ์›์ •๋ณด๋ฅผ ๋„ฃ๊ณ  ๋นผ๋Š” ํด๋ž˜์Šค, ํšŒ์› ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ํด๋ž˜์Šค, ์ฃผ๋ฌธ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํด๋ž˜์Šค ๋“ฑ ์–ด๋–ค ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ๋•Œ ์—ฌ๋Ÿฌ ํด๋ž˜์Šค๋“ค์ด ์„œ๋กœ ์–ฝํ˜€์žˆ๊ฒŒ ๋œ๋‹ค. 

 

 ์˜ˆ์‹œ๋กœ ํ‰์†Œ์—๋Š” 10๋งŒ์› ์ด์ƒ ๊ตฌ๋งค์‹œ 10ํผ์„ผํŠธ ํ• ์ธํ•˜๋Š” ์ •์ฑ…์ด์—ˆ๋Š”๋ฐ, ์ถ”์„๋งž์ด ์ด๋ฒคํŠธ๋กœ 10๋งŒ์› ์ด์ƒ ๊ตฌ๋งค์‹œ 30ํผ์„ผํŠธ๋กœ ํ• ์ธํ•˜๋Š” ์ •์ฑ…์„ ์ƒˆ๋กญ๊ฒŒ ๋„ฃ๋Š” ๊ฒƒ์„ ๋“ค์–ด๋ณด์ž. ๊ทธ๋Ÿฌ๋ฉด 30ํผ์„ผํŠธ ํ• ์ธํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์—†๋‹ค๋ฉด  ์ฃผ๋ฌธ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํด๋ž˜์Šค์— ๊ฐ€์„œ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•ด์•ผํ•œ๋‹ค. 10ํผ์„ผํŠธ ํ• ์ธ ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•ด๋†จ๊ฒ ์ง€๋งŒ, 30ํผ์„ผํŠธ ํ• ์ธ ํด๋ž˜์Šค๋กœ ๋ณ€๊ฒฝํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ• ์ธ ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค์— ๋“ค์–ด๊ฐ€ ์ง์ ‘ ์ˆ˜์ •์„ ํ•ด์ค˜์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์ƒ๊ธด๋‹ค. ๋˜ ๊ทธ๋กœ์ธํ•œ ์˜ค๋ฅ˜๋„ ๋ฐœ์ƒํ•˜๊ฒŒ๋œ๋‹ค.

 

 ๊ทธ๋Ÿฐ ์˜ค๋ฅ˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ค‘๊ฐ„์— ๊ปด๋‘๋Š” ๊ฒƒ์ด๋‹ค. A ํด๋ž˜์Šค - ์ธํ„ฐํŽ˜์ด์Šค - B ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค์–ด B ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋กœ ๋Œ€์ฒดํ•˜๋”๋ผ๋„ A ํด๋ž˜์Šค ์ฝ”๋“œ์— ์ง์ ‘์ ์ธ ์ˆ˜์ •์ด ์—†๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

 

 ๋ฌผ๋ก  ์ธํ”„๋Ÿฐ์— ๊น€์˜ํ•œ ์„ ์ƒ๋‹˜์˜ ์Šคํ”„๋ง๊ธฐ๋ณธํŽธ์„ ๋“ฃ๊ฒŒ๋œ๋‹ค๋ฉด ์ž๋ฐ” ์Šคํ”„๋ง์˜ ์˜์กด์„ฑ ๋ฌธ์ œ๋ฅผ ์–ด๋–ค์‹์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š”์ง€ ๋” ์ž์„ธํ•˜๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

 


 

 

 

Q. ๊ทธ๋ ‡๋‹ค๋ฉด ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด๋ถ€์— ์ถ”์ƒ๋ฉ”์„œ๋“œ๋ฅผ ๋‘๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€?

A. ์ฒซ๋ฒˆ์งธ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜๋œ ๋ฉ”์„œ๋“œ๋“ค์„ ๊ตฌ์ฒดํด๋ž˜์Šค์— ๊ฐ€์„œ ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. ๋งŒ์ผ ์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜๋œ ๋ฉ”์„œ๋“œ๋“ค์„ ๊ตฌํ˜„์ฒด์—์„œ ์‹คํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

 

 ๋‘๋ฒˆ์งธ๋Š” ์• ๋งค๋ชจํ˜ธํ•˜๊ฒŒ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜์—ฌ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค. ์•„๊นŒ ์œ„์˜ ์งˆ๋ฌธ์—์„œ ์„œ์ˆ ํ–ˆ๋“ฏ, ํ• ์ธ ์ •์ฑ…์ด ๋ณ€๊ฒฝ๋  ์‹œ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊ตฌ์ฒด์ ์ธ ๋ฉ”์„œ๋“œ๋กœ ์ •์˜๋˜์–ด์žˆ๋‹ค๋ฉด ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ฝ”๋“œ๋„ ์ˆ˜์ •ํ•ด์•ผํ•œ๋‹ค. ์ถ”์ƒ๋ฉ”์„œ๋“œ๋กœ ๋‘ฌ ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„๋งŒ ๋งž์ถฐ ๊ตฌ์ฒดํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ๊ฐ์ชฝ๊ฐ™์ด ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค. (์ด ๊ฒฝ์šฐ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„๋ถ€๋ฅผ ์ด์–ด์ฃผ๋Š” ํด๋ž˜์Šค๊ฐ€ ๋”ฐ๋กœ ์กด์žฌํ•ด์•ผํ•œ๋‹ค.)

 

 


 

 

 

Q. ํด๋ž˜์Šค๋Š” ํด๋ž˜์Šค์—๊ฒŒ ๋‹ค์ค‘ ์ƒ์†์ด ์•ˆ๋˜์ง€๋งŒ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ฐ€๋Šฅํ•˜๋‹ค. ์™œ ๊ทธ๋Ÿฐ๊ฒƒ์ผ๊นŒ?

A.
๋‹ค์ด์•„๋ชฌ๋“œ ๋ฌธ์ œ๋ฅผ ์œ ๋ฐœํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•œ ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅธ ๋‘ ํด๋ž˜์Šค์—๊ฒŒ ์ƒ์†์„ ๋ฐ›์•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ๋‘ ํด๋ž˜์Šค์— ๊ฐ™์€ ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜ (๋™์ผํ•œ ์ด๋ฆ„, ๋™์ผํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜)๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•˜์œ„(์ƒ์†์„ ๋ฐ›์€) ํด๋ž˜์Šค๋Š” ํ˜ผ๋™ํ•˜๊ฒŒ ๋œ๋‹ค. ์–ด๋–ค ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ๋ฐ›์•„์˜ฌ์ง€ ๋ง์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ํด๋ž˜์Šค๋Š” ๊ตฌ์ฒด์ ์œผ๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์ค‘์ƒ์†์ด ์•ˆ๋œ๋‹ค.

 

 ํ•˜์ง€๋งŒ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ถ”์ƒ์ ์ธ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ๊ฐ™์•„๋„ ๋ฌด๊ด€ํ•˜๋‹ค. 

 

 

 

 


 

 

 

1)  ๊น€์˜ํ•œ์˜ ์Šคํ”„๋ง ๊ธฐ๋ณธํŽธ ์ถœ์ฒ˜

 

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

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

www.inflearn.com

 

 

 

2) ์ธํ„ฐํŽ˜์ด์Šค ์ด์ •๋ฆฌ ์ถœ์ฒ˜

 

[Java] ์ธํ„ฐํŽ˜์ด์Šค(interface) ์ด ์ •๋ฆฌ

์„œ๋ก  Spring ๊ณต๋ถ€ํ•˜๋˜ ์ค‘ interface๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ดํ•ด๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒƒ ๊ฐ™์•„ ์ž์„ธํ•˜๊ฒŒ ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ชฉ์ฐจ 1. ์ธํ„ฐํŽ˜์ด์Šค๋ž€? 2. ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ž‘์„ฑ ๋ฐฉ๋ฒ• 3. ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ƒ์† 4. ์ธํ„ฐํŽ˜์ด์Šค์˜

dkswnkk.tistory.com

 

 

 

3) TCPSchool ์ถœ์ฒ˜

 

์ฝ”๋”ฉ๊ต์œก ํ‹ฐ์”จํ”ผ์Šค์ฟจ

4์ฐจ์‚ฐ์—…ํ˜๋ช…, ์ฝ”๋”ฉ๊ต์œก, ์†Œํ”„ํŠธ์›จ์–ด๊ต์œก, ์ฝ”๋”ฉ๊ธฐ์ดˆ, SW์ฝ”๋”ฉ, ๊ธฐ์ดˆ์ฝ”๋”ฉ๋ถ€ํ„ฐ ์ž๋ฐ” ํŒŒ์ด์ฌ ๋“ฑ

tcpschool.com

 

 

 

 

4) ๋‹ค์ค‘ ์ƒ์† ์ถœ์ฒ˜

 

[Java] ์ž๋ฐ”์˜ ๋‹ค์ค‘์ƒ์† (feat. ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ถ”์ƒํด๋ž˜์Šค)

์•Œ๊ณ  ์‹œ์ž‘ํ•ด์•ผ ํ•  ๋‚ด์šฉ 1. ์ž๋ฐ”์—์„œ ํด๋ž˜์Šค์˜ ๋‹ค์ค‘ ์ƒ์†์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. 2. ํ•˜์ง€๋งŒ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋‹ค์ค‘ ์ƒ์†์€ ๊ฐ€๋Šฅํ•˜๋‹ค. why? ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ถ”์ƒํด๋ž˜์Šค๋ฅผ ๊ณต๋ถ€ํ•˜๋˜ ์ค‘, ์ž๋ฐ”์˜ ๋‹ค์ค‘์ƒ์† ์ด๋ž€ ๊ฐœ๋…

junior-datalist.tistory.com

 

'๐Ÿงธ ์™œ ๊ทธ๋Ÿฐ๊ฑธ๊นŒโ”' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

2. return  (0) 2025.07.01

+ Recent posts