spring-god-study / spring-basic

김영한님 스프링 기본 강의를 듣고 서로 인증하고 힘을 내며 잇쌰잇쌰하는 프로젝트
0 stars 3 forks source link

2021.07.19 (월) 인증 #13

Open kyupid opened 3 years ago

kyupid commented 3 years ago

평일 - 매일 최소 1 강의 주말 - 토,일 중 최소 1 강의

kimminju commented 3 years ago

2021.07.19 섹션2 build.gradle 기본

  1. gradele 수정 시에 Reload 꼭 해줘야 함
  2. plugins : 스프링 버전 확인 가능 / 의존관계 설정 확인 가능
  3. sourceCompatibility : 11 (java 11버전)
  4. dependencies(의존관계) : 스프링 부트 스타터, 테스트관련 lib
    • core , context 핵심 lib
  5. mainApplication run 할때 서버가 돌아가기만 하고 아무런 반응이 없다

Tip(window 기준) 변경(run 돌릴 때 속도가 높다) file > settings > Build, Execution, Deployment > Build Tools > Gradle > Build and run using : IntelliJ IDEA Run tests using : IntelliJ IDEA

비즈니스 요구사항과 설계

  1. 회원 1) 회원 기능 : 가입, 조회 2) 회원 등금 : 일반, vip 3) 회원 데이터는 자체 db구축 및 외부시스템과 연동가능(미확정)
  2. 주문과 할인 정책 1) 회원 상품주문가능 2) 회원 등급에 따라 할인정책 적용 3) 할인정책은 모든 vip는 1000원 할인해주는 고정금액을 적용해달라(변경소지있음) 4) 할인정책은 변경가능성 높다. 회사의 기본할인정책 정하지 못함, 오픈직전까지 고민을 미루고 있음 최악의 경우 할인 적용안 할 수도 있다.(미확정) 5) 요구사항을 보면 회원데이터, 할인정책같은 부분은 지금 정하기 어렵다 그러나 이런정책이 결정될떄까지 개발을 무기한 기다릴 수 없다 => 인터페이스를 만들고 구현체를 언제든지 갈아끼울 수 있도록 설계 참고로, 순수 자바로 만든다(환경만 스프링부트로 진행)

회원도메인 설계

  1. 회원도메인 협력관계

      호출    

    클라이언트 -> 회원서비스 -> 회원 저장소(인터페이스) (회원가입, 회원조회) - 메모리 회원저장소(일단 진행)

    • db 회원저장소
    • 외부시스템연동 회원저장소
  2. 회원 클래스 다이어그램

    MemberService ↑ MemerServiceImpl -> MemberRepositoy - MemoryMemberRepositoy - DBMemberRepositoy
  3. 회원 객체 다이어그램(실제 객체간의 메모리 참조 주소 값)

    • new 한 인스턴스끼리의 참조

    클라이언트 -> 회원서비스(MemerServiceImpl)-> 메모리 회원 저장소(MemoryMemberRepositoy or DBMemberRepositoy)

  4. 구현체는 동적으로 결정 (클래스 다이어그램으로 판단하기 어려워서 객체 다이어그램을 참고한다.)

sablemarten commented 3 years ago

스프링 핵심 원리 이해2 - 객체 지향 원리 적용 새로운 할인 정책 개발 새로운 할인 정책 적용과 문제점 관심사의 분리

SOLID원칙에 맞춰서 코드 다시 짜는 과정을 가졌다. 역할과 구현에 대해서 다시 강조했다. 당분간은 이에 대한 부분을 계속해서 코드로 보여주는 예제 시간을 가질 것 같다. 실무에서 작업할 때에는 만들 때 피해서 만들었지만, 일단 연결 시켜주고 제거하고 넣어주는 과정을 겪는 것도 또 낯설었다. 아직 갈 길이 멀다.

narafu commented 3 years ago

스프링 입문 - 섹션 6

dnjsrud3407 commented 3 years ago

강의명 : 스프링 핵심 원리 - 기본편

수강 회차 <싱글톤 컨테이너>

요약

hokyung-lee commented 3 years ago

스프링 핵심 원리 이해1 - 예제 만들기

dowon-ahn commented 3 years ago

HTTP API

HTPP 메서드 종류

GET

POST

요청 데이터를 처리한다는 것은?

PUT

PATCH

DELETE

HTTP 메서드의 속성

cxz5309 commented 3 years ago

스프링 핵심 원리 - 기본편

2. 객체 지향 원리 적용

새로은 할인 정책 적용과 문제점

추상(인터페이스) 뿐만 아니라 구체(구현) 클래스에도 의존하고 있다.
DIP 위반

따라서 기능을 확장해서 변경하면 소스코드도 함께 변경해야 한다. OCP 위반

-> 인터페이스에만 의존하도록 설계를 변경하자!
->> 누군가가 클라이언트에 구현 객체를 대신 생성하고 주입해주어야 한다.

관심사의 분리


AppConfig의 등장

생성자 주입을 통해 '의존관계에 대한 고민은 외부'에 맡기고 '실행에만 집중'하면 된다.

정리

char-yb commented 3 years ago

uiurihappy 강의명: 스프링 핵심원리 기본편 회차: 중복등록과 충돌

컴포넌트 스캔에 의해 자동으로 스프링 빈이 등록되는데, 그 이름이 같은 경우 스프링은 오류를 발생시킨다. ConflictingBeanDefinitionException 예외 발생한다. 만약 수동 빈 등록과 자동 빈 등록에서 빈 이름이 충돌되면 수동 빈 등록이 우선권을 가진다.

수동 빈 등록시 남는 로그 Overriding bean definition for bean 'memoryMemberRepository' with a different definition: replacing

자동 보다는 수동이 우선권을 가지는 것이 좋다. 하지만 현실은 개발자가 의도적으로 설정해서 이런 결과가 만들어지기 보다는 여러 설정들이 꼬여서 이런 결과가 대부분이다. 최근 스프링 부트에서는 수동 빈 등록과 자동 빈 등록이 충돌나면 오류가 발생하도록 기본 값을 바꾸었다