TIL - 22.12.07

0

TIL

목록 보기
28/126

인프런 스프링 무료강의 참고
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/unit/49580

스프링 웹 개발 방법 3가지 - 정적 컨텐츠, MVC와 템플릿 엔진, API

정적 컨텐츠

  • 서버에서 데이터를 받아 웹 브라우저로 넘겨주는 것이 아닌, 파일 그대로 웹브라우저에 넘겨주는 방식
  • 프로그램을 구현할 수는 없다.
    스프링 부트는 브라우저에서 요청받은 후 Controller를 먼저 확인하고, Static을 확인한다.

MVC와 템플릿 엔진

  • Model, View, Controller
    view는 화면을 그리는데에만 집중
    controller는 비즈니스 로직 또는 내부적인걸 처리하는데 집중
    model은 화면에 표시될 정보들을 전달하는데 집중
  • 서버에서 html 변형 후 웹브라우저에 넘겨주는 방식

API

  • 주로 jSon(key:value로 이루어진 구조)이라는 데이터 포멧으로 Http의 Body에 문자 내용을 직접 반환
  • 스프링이 요청을 받았을 때 @ResponseBody가 붙어있고 객체로 받는다면 jSon방식(key:value)으로 데이터를 만들어서 응답에 반환한다.



회원 관리 예제

  1. 비즈니스 요구사항 정리
  2. 회원 도메인과 레포지토리 만들기
  3. 회원 레포지토리 테스트 케이스 작성
  4. 회원 서비스 개발
  5. 회원 서비스 테스트


1. 비즈니스 요구사항 정리

  • 데이터 : 회원 ID, 이름
  • 기능 : 회원 등록, 조회
  • 아직 데이터 저장소가 선정되지 않음(가상의 시나리오)

일반적인 웹 애플리케이션 계층 구조

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


클래스 의존관계

  • 아직 데이터 저장소가 선정되지 않았으므로 인터페이스로 구현 클래스 변경 가능하도록 설계한다.
  • 데이터 저장소는 여러 종류 중 고민 중인 상황으로 가정
  • 개발 진행을 위해 초기 단계에서는 구현체로 가벼운 메로리 기반의 데이터 저장소를 사용


2. 회원 도메인과 레포지토리 만들기

  • 클래스 위에 @Repository 어노테이션
  1. domain(pakage) Member(class)에
    객체(고유id와 사용자name을) 선언, Getter/Setter 구현
  2. 회원 레포지토리(repository)의 MemberRepository(interface) 생성
    Optional : 반환값이 null일 때 처리해주는 기능
  3. MemoryMemberRepository 클래스 만들어서 위에 인터페이스를 구현
    MemberRepository를 implements하고 메서드를 임포트
    가져온 값을 저장할 메모리를 생성 -> 나머지는 주석 참고
  • 코드 구현이 잘 되는지 테스트코드 작성해보기

4. 회원 서비스 개발

  • 클래스 위에 @Service 어노테이션
  • 회원 서비스는 회원 레포지토리와 도메인을 활용하여 실제 비즈니스 로직을 작성한다.
    레포지토리는 단순히 저장소에 넣었다 뺐다 하는 느낌..?
    서비스 클래스는 비즈니스에 가까운 네이밍을 하는 것이 중요!
  • 이제 다시 잘 돌아가는지 테스트코드 작성

멤버 컨트롤러 작성

  • 클래스 위에 @Controller



오늘 인텔리제이 멈춤현상 때문에 구글링을 해보다가 어떤 플러그인을 깔아서 실행을 해봤더니 인텔리제이가 꺼지고 실행이 되지 않았다...
재부팅도 해보고 재설치도 해봤지만 실행은 되지않았고
몇시간동안 별에별짓을 더 해보았지만 멘탈이 나갈 때 쯤 튜터님의 도움으로 인텔리제이를 강제설정하는 방법을 배워서 다시 설치했더니 무사히 켜졌다.
잘못 사용하면 큰일날수도 있다는 말씀에 사용 방법은 기억에서 지웠다.
앞으로 뭔지 잘 모르겠는건 하지말아야징...

0개의 댓글