본문 바로가기

developer/인프런 - 스프링 입문

[인프런 - 스프링 입문] 3/18 개발공부일지 - 회원관리예제(객체 생성을 위한 interface 사용, 테스트 코드 체험)

어제(23.3.17)도 공부하긴 했는데, 엎어졌다.

갑자기 모르는 개념이 우다다다 쏟아지는데, 일주일 동안 감기랑 동고동락하면서 회사일 바쁘게 쳐내면서 퇴근하고 2-3시간 정도 코딩공부하다 보니 몸은 닳을 대로 닳고, 과부하였던 듯하다. 몸도 안 따라 주는데 모르는 게 쏟아지니까 ㅋㅋㅋ

그래서 커밋은 했는데 포스팅은 실패 ㅜ ㅋㅋㅋ

근데 어렵게 생각하지 말고 "자주 보고 일단 익숙해져야 한다."는 처음의 마음을 잊지 말고,

모르는 건 꼼꼼히 챙기되, 너무 스트레스 받지 말고 하나씩 하나씩 머리에 입력하면 되지 ㅎㅎ

 

가즈아!

 

interface(인터페이스)

MemberRepository repository = new MemoryMemberRepository();

인스턴스 생성 시 기존에 알던 문법과는 다르다.

 

"class 이름" "인스턴스 이름" = new "class 이름"(); 

으로 입력되어야 하는데, class 이름이 앞뒤로 다르다.

interface라는 추상 class 인데, 기존 java에서 instance 생성 시, 문제점(다중상속 지원 X)을 해결한다.

인터페이스 변수 = 구현객체;

 

public class MemoryMemberRepository implements MemberRepository {
	(...)
}

요 형태로 class 선언되어 있으면 interface로 인스턴스 생성, 상속을 가능하게 한다.

무튼 그런 개념이 있는 정도로 스킵.

 

interface 사용을 위한 절차:

⌥+return 키 입력 후 implement methods 선택

그럼 package랑 library 이것저것 호출됨:)

 

 

 

참고: 

 

테스트 코드 실행 결과 확인

    @Test
    public void save() {
        Member member = new Member();
        member.setName("Spring");

        repository.save(member);

        Member result = repository.findById(member.getId()).get(); //Optional에서 꺼낼 때 get() 사용.. 문제 소지 있지만 test 에서는 상관 없음
        Assertions.assertEquals(member, result);//junit안에 있는 method
//        System.out.println("result = " + (result == member));
		System.out.println(result);
        System.out.println(result.getName());
        System.out.println(member.getName());
    }
}

Spring 이라는 name값을 입력받은 member(class)를 repository에 저장한다.

저장된 값을 읽어와서 result 라는 클래스를 선언한다.

repository에 저장된 class를 불러온 class와 입력한 class가 동일하다면 제대로 입력됐는지 확인할 수 있다는 알고리즘으로 테스트코드가 구현되어 있다.

(이 save() method를 이해하기 위해 2시간은 쏟은 듯하다 으하하하)

 

결과:

성공

실패

그리고 내 선에서 이해해보기 위해 맘대로 뚜드려대고 출력 확인해 봄.

오 제대로 입력이 됐군.

두 개의 입력값이 같군.

 

어제는 좀 쫄았는데,

보고 또 보고

step by step

급하게 생각하지 말고 원래 1년 정도는 공부할 생각하고 준비한 거니까.