반응형
[여기에 적은 거는 강의 내용을 다 적은게 아니라서 강의자료 보면서 이 게시글 참고하자.]
[스프링 심화 강의 1주차 11강 AllInOneController 의 문제점]
- springCore 프로젝트에서 실습
[웹 서비스 구성도]
- 전체적으로 순서를 보자
- 사용자가 웹 브라우저(클라이언트)를 사용한다. 웹 브라우저를 사용해서 API요청이 오면 서버는 그 요청을 받아서 DB에 어떤 SQL을 가지고 SQL언어(DB언어)를 사용해서 DB에 접근한다.
- 지금 가장 어려움을 주는 거는
==> 클라이언트, 서버, DB 모두가 다른 언어를 사용하기 때문에 그 중간 과정에서 커뮤니케이션 하기 위한 언어가 필요하다. 그래서 API, SQL 이런것들이 필요하다.
- ProductRequestDto 안에 관심 상품명(title), 관심상품 image URL(image),
관심상품 구매링크 URL(link), 관심상품의 최저가(lprice) 이런 정보들이 클라이언트로부터 넘어오는 거를 클라이언트의 Request body부분에 들어온다.
그래서 그 내용을 Dto에 채워준다.( 그 역할은 Spring이 해준다.)
- 기본클래스.java (예시. Product.java)
-> Product.java 클래스에 id, image, link ...여기 정보들이 DB에 들어가 정보들을 모아 놓은 클래스이다.
관심상품 등록 API
관심상품 최저 희망가 업데이트 API
관심상품 조회
- 절차적 프로그래밍 vs. 객체지향 프로그래밍
- 👉 "절차적 프로그래밍(Procedural Programming)" vs. "객체지향 프로그래밍(Object-Oriented Programming)"
- "절차적 프로그래밍"
- 초기 프로그래밍 방식
- 컴퓨터가 해야할 일들을 쭈~욱 순차적으로 나열해 놓는 코딩 방식
- 예) AllInOneController 클래스의 각 API 처리내용
- "객체지향 프로그래밍"
- 소프트웨어의 규모가 점점 커지면서 필요성이 부각이 됨
- 대부분의 사람들은 한 번에 여러가지 다른 생각을 하는데 취약
- 하나의 사물 (객체) 에 하나의 의미를 부여하는 것처럼 프로그래밍하게 됨
- 예)
- 뭔가 자를 것이 필요하면 '✂️' 를 떠올림 (class Sciccors)
- 종이에 적을 게 필요하면 '✏️' 을 떠올림 (class Pen)
- "하나의 역할" → 객체
- 예)
- "절차적 프로그래밍"
- 메모앱 (ex. Evernote, Notion 등) 예제를 통한 이해
- 절차적 프로그래밍
- 장점:
- 메모를 작성하기에 편함 (직관적)
- 단점:
- 메모양이 많아지면 정리가 어려움
- 내가 원하는 메모 내용을 찾기 어려움
- 장점:
- : 아무 메모장을 띄워서, 생각나는데로 사고의 흐름을 적는다 (퀵메모)
- 객체지향 프로그래밍
- 장점: 메모를 관리하기 쉬움
- 단점:
- 주제를 어떻게 나눠야 할지, 고민이 필요
- 잘못 주제를 나누면..
- 중복된 메모 내용이 생길 수 있음 (ex. "나중에 읽을 책", "도움이 되는 책")
- 하나의 주제에 너무 적거나, 너무 많은 메모 내용이 들어갈 수 있음 (ex. "88 올림픽 한국 순위와 금메달 개수", "공부")
- 잘못 주제를 나누면..
- 주기적으로 주제별 (카테고리별) 정리가 필요할 수 있음
- 떠오르는 생각들을 적을때 주제가 다른 메모내용들을 적기 어려움
- 주제를 어떻게 나눠야 할지, 고민이 필요
- : "주제별"로 정리해서 메모한다. (ex. 주식 투자, 바리스타 공부)
- 절차적 프로그래밍
- 추천 프로그래밍 방식
- 처음엔 "절차적 프로그래밍"
- "객체지향 프로그래밍"으로 리팩토링
'리팩토링' 이 뭐죠??
: 기능 상의 변경 없이 프로그래밍 구조를 개선하는 것
1) 하나의 파일에 너무 많은 코드가 들어가지 않게!
2) 역할별로 코드 분리!!
3) 코드를 좀 더 읽기 편하게!!!
반응형
'JAVA' 카테고리의 다른 글
[JAVA/SpringBoot] 객체 중복 생성 문제 해결 (1-14) (0) | 2022.05.27 |
---|---|
[JAVA/SpringBoot] Controller, Service, Repository 역할 (1-12)★★ (0) | 2022.05.27 |
[JAVA/SpringBoot] 관심상품 등록 API 구현하기 (1-10) (0) | 2022.05.27 |
[JAVA/SpringBoot] 스프링 심화 강의 1주차(1-9) (0) | 2022.05.27 |
[JAVA/SpringBoot] 스프링 심화 강의 1주차(1-8) (0) | 2022.05.27 |