본문 바로가기
Framework & Library/Spring Boot

[Spring Boot] : 회원 정보를 간단하게 저장하고 조회를 할 수 있는 기능을 구현

by 오주현 2022. 1. 21.
반응형

회원 정보를 간단하게 저장하고 조회를 할 수 있는 기능을 구현해 본다.

@Data
public class Member {

    private Long id;
    private String username;
    private int age;

}

회원 관련 데이터를 만들어 주었고 lombok 라이브러리를 통해 @Data 어노테이션을 사용해서 Getter와 Setter를 자동 생성하게 해 주었다. 강의에서는 @Getter @Setter를 사용했는데 스터디에서 배운 @Data 어노테이션을 활용해 보았다.

lombok 공식 문서 @Data 참고

public class MemberRepository {

    private static Map<Long, Member> store = new HashMap<>();
    private static long sequence = 0L;

    private static final MemberRepository instance = new MemberRepository();

    public static MemberRepository getInstance() {
        return instance;
    }
}

회원 저장소는 싱글톤 패턴이 적용되어 있다. 싱글톤 패턴은 객체를 단 하나만 생성해서 공유해야 하므로 생성자를 private 접근자로 막아둔다.

public Member save(Member member) {
        member.setId(++sequence);
        store.put(member.getId(), member);
        return member;
    }

member 저장마다 sequence 값이 증가하도록 설정하고 Id를 기준으로 member를 꺼낼 수 있도록 코딩한다.

@AfterEach
    void afterEach() {
        memberRepository.clearStore();
    }

테스트 코드를 작성할 때 @AfterEach를 통해 각 @Test 메소드가 실행 될 떄 전에 사용한 리소스를 처리하는데 사용했다. 이렇게 되면 다음 테스트에 영향을 주지 않고 계속 테스트를 진행할 수 있게 된다.

@Test
    void findAll() {
        //given
        Member member1 = new Member("member1", 20);
        Member member2 = new Member("member2", 30);

        memberRepository.save(member1);
        memberRepository.save(member2);
        //when
        List<Member> result = memberRepository.findAll();

        //then
        assertThat(result.size()).isEqualTo(2);
        assertThat(result).contains(member1, member2);
    }

조회 테스트를 보면 Member에 키,벨류 값을 넣어주고 저장해 주었다. 그리고 조회 기능을 코딩해주고 사이즈를 체크하여 같은지 확인했고 contains를 통해 result안에 member1과 member2 객체가 있는지도 체크했다.

given은 ~게 주어졌을 때, when은 ~게 실행 되었을 때, then은 결과가 이래야 한다. 이렇게 쓰인다고 한다.


스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술을 참고하여 공부하였습니다.

반응형

댓글