TIL

54일차

haedal-uni 2021. 11. 6. 01:42
728x90

다형성

NewCl이라는 클래스가 있다. 클래스에 있는 변수가 a와 b가 있다.

NewCla라는 클래스가 있다. a와 b를 받고 변수 c를 추가하고 싶다.

이럴경우 NewCl 클래스를 상속받은 후 NewCla 클래스에 변수 c를 추가한다.

ClaNew라는 클래스가 있다. NewCl 클래스를 상속받은 후 ClaNew라는 클래스에 변수 d를 추가한다.

같은 부모를 상속 받았지만 NewCla라는 클래스와 ClaNew라는 클래스는 같지 않다.

이것을 다형성이라고 한다.

 


 = 강의 내용 정리 =

 

Spring을 쓰는 이유?

 

spring 기본 layer 구성 + 이것을 지키려면 어떻게 써야하는지 모양새

→ 이 흐름으로 진행

 

 

Class Diagram 

개발자 A가 퇴사를 한 후 개발자 B가 이전의 코드 구조를 봐야한다. 

👉🏻 이 경우 Class Diagram을 사용한다.

 

Class Diagram이란 정적 다이어그램으로 클래스의 구성요소 및 클래스간의 관계를 표현하는 대표적인 UML이다.

UML이란 Unified Modeling Language의 약자로 도메인(해결하고자 하는 목표, ex. 결재시스템 등)을

모델로 표현해주는 대표적인 모델링 언어이다.

 

도메인 모델이란 해결하고자 하는 문제 영역 정도

 

Class Diagram을 사용하는 이유는 서로 커뮤니케이션을 유용하게 함과 동시에

혹시 모를 리스크에 대비해 문서화 하는 것이다.

 

Class Diagram을 통해 문제 도메인의 구조를 나타낼 수 있다. 

이 때의 Diagram은 실제 사물(Object) 혹은 개념 (추상적 개념 포함)을 나타낸다.

그렇기 때문에 Diagram은 실제로 구현 될 소스 코드와는 다를 수 있으며 의미나 해석도 경우에 따라 달라질 수 있다.

 

 

<도메인 모델이란?>, https://javacan.tistory.com/entry/what-is-a-domain-model

< [UML] 클래스 다이어그램 이해하기 >, https://sabarada.tistory.com/72

< [프로젝트 BEP ] 제 3장 : 시스템 설계 ② - UML의 Class Diagram(클래스 다이어그램)에 대해 >, https://nitro04.blogspot.com/2020/09/bep-3-uml-class-diagram.html

<Class Diagram(클래스 다이어그램) - Basic>, https://thinking-jmini.tistory.com/26

 


Spring 기본 레이어 구성

 

자바 직렬화란?

자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록

바이트(byte) 형태로 데이터 변환하는 기술

 

* 긴 시간 동안 외부에 저장하는 의미 있는 데이터들은 자바 직렬화를 사용하지 않는다.

 

 

우아한형제들 기술 블로그, <자바 직렬화, 그것이 알고싶다. 훑어보기편 >, https://techblog.woowahan.com/2550

우아한형제들 기술 블로그, <자바 직렬화, 그것이 알고싶다. 실무편 >, https://techblog.woowahan.com/2551

 

 

 

 

Singleton -- DI

DI를 알기 위해선 Design Pattern이 무엇인지 알아야 하고,

왜 spring은 Singleton Pattern을 채택하고 있는지에 관한 연결된 부분들을 이해해야한다.

 

 

[Spring] DI? IoC Container? Bean? 숲을 보는 게시물, https://ooeunz.tistory.com/82

[Spring] D.I (Dependency Injection) 의존성 주입, 도대체 뭘까?, https://ksbsite.tistory.com/4

 

 

 

 

Layered Architecture

 

각각의 layer에 많은 객체들이 있다. (layer != 객체)

 

1. Controller (Presentation layer)

이 과정에 직렬화가 나온다.

 

- 클라이언트의 요청을 받는다.

- 요청에 대한 처리는 서비스에게 전담한다.

- 클라이언트에게 응답한다.

   Controller → DTO

Client가 request한다. Presentation layer에게

 

2. Service (Business Layer)

미들웨어(Back-end)

- 비즈니스 로직을 처리

   * 비즈니스 로직 : 서버에서 사용자의 요구사항 처리

- DB 정보가 필요할 때는 Repository에게 전담

 

 

3. Repository

- DB 관리 (연결, 해제, 자원 관리)

- DB CRUD 작업 처리

 

 

전체로 보기

 

 

요청 하는 거 layer 갈아끼우기 할 때 편하라고 하는게 "스프링 기본 레이어 구성"이다.

 

* MVC에 대해 따로 글을 작성했다. (그림그려서 쉽게 이해 할 수 있게 작성함! )

MVC, MTV https://lu-delight.tistory.com/119   , Backend 전체 흐름 보기 https://lu-delight.tistory.com/274

 

 

<DTO의 사용 범위에 대하여>, https://tecoble.techcourse.co.kr/post/2021-04-25-dto-layer-scope/

<Spring Boot Architecture>, https://www.javatpoint.com/spring-boot-architecture

 

 

 

이번주 공부는 스프링 1 반복하기 & 튜토리얼 프로젝트 해보기 추천

[ 튜토리얼 프로젝트 ]

<Spring PetClinic Sample Application>, https://github.com/spring-projects/spring-petclinic

<Spring-guides>, https://github.com/spring-guides/gs-rest-service

 

 

 

 

REST API

상태를 주고 받는 것을 뜻한다.

JSON이나 XML의 형태로 데이터를 주고 받는 것이 일반적이며 URI(Uniform Resource Identifier)를 통해

자원을 명시하고 HTTP 프로토콜에서 제공하는 메소드를 활용해 해당자원에 대한 CRUD를 동작하게 하는 API

 

* CRUD = Create, Read, Update, Delete

 

이전에 python에서 flask를 이용해 REST API를 구현했었다.

@app.route('/articles', methods=['GET'])
@app.route('/article', methods=['POST'])
@app.route('/article', methods=['PUT'])
@app.route('/article', methods=['DELETE'])

 

 

[Flask] 파이썬 Flask를 이용하여 REST API 만들기 - 2, https://rekt77.tistory.com/104

 

 

 

 

Spring은 추적할 수가 없다.

Java나 python은 print or System.out.println을 이용해 어떻게 출력이 된 건지 알 수 있는데 

Spring은 print를 못하므로 코드 파악이 어렵다.

 

 

 

상속

NewCl이라는 클래스가 있다. 클래스에 있는 변수가 a와 b가 있다.

NewCla라는 클래스가 있다. a와 b를 받고 변수 c를 추가하고 싶다.

이럴경우 NewCl 클래스를 상속받는다.

 

 

 


 

실강이 예전에는 1시간당 10분씩 쉬었는데 이제는 쉬는시간이 2~3시간에 10분이 되버려서 

머릿속에서 정리하고 이해하기가 힘들다..

50분 정도 수업하면 진도양이 별로 없어서

따라하다가 중간에 에러나서 쉬는시간 때 수정하거나 정리를 할 수 있어서 좋았는데

이제는 그냥 안녕이 되버린 것 같다.

1시에 끝나는 줄 알았는데 1시 30분 넘겨서 끝나니깐 2시에 팀원분들과 정리해야해서 

점심도 그냥 거르고 요즘 저녁만 먹는 것 같다 🥲

 

 

 

728x90

'TIL' 카테고리의 다른 글

58일차 (spring1 실습)  (0) 2021.11.09
57일차  (0) 2021.11.08
53일차(미완)  (1) 2021.11.04
52일차  (0) 2021.11.04
51일차  (0) 2021.11.02