작성
·
240
0
강의내용 7:00 에 등장하는
Assertions.assertThat(member).isEqualTo(findMember);
에서 member와, findMember를 isEqualTo(내용비교)를 통해 내용이 같은지 검증을 하고 있습니다.
여기서는 당연히 member와 findMember의 내용비교가 같다는 것을 이해하였습니다.
그런데 isSameAs(주소값 비교)로 검증을 해보아도 주소 값이 같다는 결과가 나왔습니다. println() 메서드를 통해 member와 findMember의 주소값이 같다라는 결과도 눈으로 확인하였습니다.
member는 new Member(1L, "memberA", Grade.VIP); 를 통해 객체를 새로 생성하여 member객체에 담았고,
findMember 객체는
member의 값을 join을 통해 memberServiceImpl.join -> MemoryMemberRepository.save를 호출하여 store에 저장되어이있는 값을 findById를 통해 가져와서 Member 타입의 findMember에 새로 저장을 했다라고 생각이 들어, 제 생각에는 member와 findMember의 주소값 비교가 다르다는 결과가 나와야 되지 않나 싶어 질문 남깁니다.
member객체와 findMember의 주소값 비교가 어떻게 같을 수 있는 것인가요 ?
답변 1
0
안녕하세요. 민기님
현재 MemoryMemberRepository에 Member 인스턴스를 저정하고, 같은 MemberMemberRepository에서 Member 인스턴스를 조회하고 있습니다.
다음 코드를 보시면 Map에 인스턴스를 보관하기 때문에 찾을 때도 같은 인스턴스가 찾아지는 것이 맞습니다.
@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);
}
}
감사합니다.