초이로그

준비하기1.Spring강의듣기(백엔드개발) 본문

Spring

준비하기1.Spring강의듣기(백엔드개발)

수연초이 2021. 2. 2. 03:28
회원관리예제-백엔드개발
  • 비즈니스 요구사항 정리
    • 일반적인 웹 애플리케이션 계층 구조
      • 컨트롤러: 웹 MVC의 컨트롤러 역할
      • 서비스: 핵심 비즈니스 로직 구현(ex. 중복 가입 방지 기능 등..)
      • 리포지토리: DB 접근, 도메인 객체를 DB에 저장 및 관리
      • 도메인: 비즈니스 도메인 객체(ex. 회원, 주문...)
    • 회원 도메인과 레포지토리 만들기
      • 회원 객체: [main]-[java]-[hello.hellospring]-[domain]-Member.java// 이름.식별자 필드
      • 회원 레포지토리: 아직 데이터 저장소를 선정하지 않아 인터페이스로 구현 클래스를 변경할 수 있도록 설계. [main]-[java]-[hello.hellospring]-[repository]-MemberRepository.interface, MemoryMemberRepository.java // Member저장, id로 검색, name으로 검색, 전체조회 기능
    • 회원 리포지토리 테스트케이스 작성
      • JUnit 프레임워크
      • assert(junit.jupyter.api) 활용시 - Assertions.assertEquals(member, result);
      • assert(assertj) 활용시 - Assertions.assertThat(member).isEqualTo(result); assert문을 더 편하게 활용 가능
      • @AfterEach: 각 테스트가 종료될 때마다 실행됨. 메모리 DB에 저장된 데이터 삭제
      • 테스트는 각각 독립적으로 실행되어야함. 테스트 순서에 의존관계가 있으면 좋은 테스트라고 할수 없음.
    • 회원 서비스 개발
      • 비즈니스에 가까운 로직을 설계하여 기입
      • [main]-[java]-[hello.hellospring]-[service]-MemberService.java: 회원가입(중복 회원 검증), 전체 회원 조회, id조회 기능
    • 회원 서비스 테스트
      • DI(Dependency Injection)을 주의: new 생성 2개 이상 주의
      • Test는 빌드시 포함되지 않으므로 과감하게 한글로 메소드를 작성하기도 함(직관적)
      • given(데이터가 주어져서) - when(실행하였을때 검증할 것) - then(원하는 결과)
      • @BeforeEach: 각 테스트 실행 전에 호출됨

 

문법정리
  • [Type] Optional: null 반환시 에러가 유발될만한 상황을 optional을 통해 감싸서 반환함.
    • Optional.ofNullable(value): 객체가 null값인지 확인. 만약 null인 경우, NullPointException이 아닌 비어있는 Optional객체 반환
    • Optional.get(): 객체가 존재하는 경우 반환. null인 경우, NoSuchElementException 던짐
  • HashMap.clear(): HashMap에 저장된 모든 객체 제거