Spring/spring_old

01. Spring Project 개요

slow333 2023. 1. 18. 13:33

스프링 관련 학습내용

유튜브 :Spring 5 for Beginner => https://www.youtube.com/playlist?list=PLOSNUO27qFbsW_JuXmzrFxPw7qzPOFfQs 

 

Spring 5 for Beginner

나무소리에서 제작한 Spring 5 기초 강의입니다. Spring 프레임워크의 핵심 내용과 주요 프로젝트(Spring Framework, Spring MVC, Spring Boot, Spring Data JPA)에 대해 학습합니다.

www.youtube.com

내용을 들으면서 정리해 가는 것임...

프로젝트는 Travel Club Project

 

우선 Spring Framework를 통해 화면 구성없이 store, service를 구현하고(Spring boot 없이 bean을 생성하고 관리)

이를 활용해서 web MVC를 구현함(Spring boot를 활용해서 bean을 생성하고 관리(Dependency Injection))

 

기본적으로 interface 부문과 aggregate(Spring에서 관리하지 않는 class)는 강의에서 제공

aggregate/club/vo(value object) => 세부 데이터 기본 제공

service/sdo(service domain object) => cdo(create domain object) 관련 기본 제공

shared/ NameValue, NameValueList => 기본 제공

exception / 사용자 정의 예외처리 기본 제공

helper / 기타 함수 기본 제공

==> 가장 어려운 설계 및 인터페이스 생성은 기본적으로 해줌.....

강의 순서는 

Spring Framework

Spring MVC

Spring Boot

Spring Data JPA

 

=========== 자체 정리 =============

프로젝트를 만들기 위해 필요한 순서(??)

0. 전체 프로젝트에 대한 UML을 작성

  - 필요 class, interface를 정의하고 상호 간의 상속, DI, 연동 관계를 정의 ==> 가장 어려움

   * 전체 서비스에 대한 내용을 파악해야 하는 과정으로 ...실제 프로젝트 시 가장 어렵고, 중요함

1. Data 객체 관련 내용 : 필요 데이터의 종류 및 종류별 관리 유형

    - class를 정의 : 사용할 변수, 관련 필요 함수 정의, sdo, cdo class 생성(??)

      // Entity(모든 데이터 클래스의 조상을 정의 , 사용 ID)

       ===> spring bean으로 관리되지 않는 객체로 aggregate 패키지에서 정의/관리

2. interface 정의

    - 각각의 request에 대해 사용할 단계별 interface 정의(service, store(repository))

3. interface의 구현체 작성

    - 각각의 interface를 적용한 구현 class를 적용 ==> Spring bean 객체로 생성될 class

4. 사용자 request 처리를 위한 Controller 생성

    - UI와 연계되는 부분으로 본 프로젝트는 HTML을 생성하는 방식(View Template 사용)이 아닌

       API 방식(json 연동, 시험을 위해 insomnia 사용)으로 수행

5. Map -> JPA(DB)로 전환

    - 기존 메모리 기반 데이터(LinkedHashMap 사용)에서 Database(MySql)로 데이터 저장 방식 변경

      : Mybatis 등을 사용할 수도 있으나 JPA(Hibernate)로 구성

      => 학습을 위해 기존 jdbc만을 활용해서 하는 방식도 검토

    - 최종적으로 Data Jpa 방식(Jpa 활용 개선)으로 적용