Home 섹션2. 스프링 웹 개발 기초
Post
Cancel

섹션2. 스프링 웹 개발 기초

웹 애플리케이션 계층 구조

의존관계_이미지

  • 컨트롤러: 웹 MVC의 컨트롤러 역할
  • 서비스: 핵심 비즈니스 로직 구현
  • 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리
  • 도메인: 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨

클래스 의존관계

계층구조_이미지

  • MemberService → Member의 서비스 → 멤버 관련 비즈니스 로직 구현
  • MemberRepository → interface로 설계 → 나중에 변경될 수 있기 때문
  • MemoryMemberRepository → MemberRepository의 구현체
  • 개발을 진행하기 위해서 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용

테스트 작성

  • 테스트 코드 작성 이유
    1. 준비하고 실행하는데 오래 걸린다
    2. 반복 실행하기 어렵다
    3. 여러 테스트를 한번에 실행하기 어렵다
      • 따라서 test폴더에 main과 동일한 폴더구조를 만들어 test 코드를 만들어 사용한다.
  • 테스트 작성 요령
    • given, when, then으로 나누어 작성
  • 모든 테스트는 메소드 실행 순서에 관계없어야 한다
  • 실무에서는 테스트 시 비교연산자를 통해 실제로 값을 비교하지 않음
  • Asserstions(assertj)를 사용해 같은지 확인
  • 단축키 commend + shift + T로 해당 클래스 테스트 코드 작성 가능
  • 테스트를 먼저 작성하고 개발하는 것 → 테스트 주도 개발(TDD)

회원 서비스 개발

  • 서비스 : MemberRepository를 사용하여 비즈니스 로직을 구현
  • 회원가입, 회원 중복 확인, 회원 검색 등 회원 관련 기능을 구현

Java

  • Optional<>
    • null이 올 수 있는 값을 감싸는 Wrapper 클래스
    • null을 참조하더라도 NPE가 발생하지 않도록 한다.
    • java 8 이후 버전에서 사용가능
    • 메소드 반환값이 Optional이면 return Optional.ofNullable();

어노테이션

  • @AfterEach → 어떤 메소드가 끝나면 실행시킬 함수를 지정하는 것 → 여기서는 저장소 초기화
This post is licensed under CC BY 4.0 by the author.