Open kyupid opened 3 years ago
2021.07.19 섹션2 build.gradle 기본
Tip(window 기준) 변경(run 돌릴 때 속도가 높다) file > settings > Build, Execution, Deployment > Build Tools > Gradle > Build and run using : IntelliJ IDEA Run tests using : IntelliJ IDEA
비즈니스 요구사항과 설계
회원도메인 설계
회원도메인 협력관계
호출
클라이언트 -> 회원서비스 -> 회원 저장소(인터페이스) (회원가입, 회원조회) - 메모리 회원저장소(일단 진행)
회원 클래스 다이어그램
회원 객체 다이어그램(실제 객체간의 메모리 참조 주소 값)
클라이언트 -> 회원서비스(MemerServiceImpl)-> 메모리 회원 저장소(MemoryMemberRepositoy or DBMemberRepositoy)
구현체는 동적으로 결정 (클래스 다이어그램으로 판단하기 어려워서 객체 다이어그램을 참고한다.)
스프링 핵심 원리 이해2 - 객체 지향 원리 적용 새로운 할인 정책 개발 새로운 할인 정책 적용과 문제점 관심사의 분리
SOLID원칙에 맞춰서 코드 다시 짜는 과정을 가졌다. 역할과 구현에 대해서 다시 강조했다. 당분간은 이에 대한 부분을 계속해서 코드로 보여주는 예제 시간을 가질 것 같다. 실무에서 작업할 때에는 만들 때 피해서 만들었지만, 일단 연결 시켜주고 제거하고 넣어주는 과정을 겪는 것도 또 낯설었다. 아직 갈 길이 멀다.
스프링 입문 - 섹션 6
강의명 : 스프링 핵심 원리 - 기본편
수강 회차 <싱글톤 컨테이너>
요약
스프링 컨테이너는 빈 객체를 다 싱글톤으로 생성해서 관리해준다 : 클라이언트가 동시에 여러명이 접속하기 때문에 프로그램을 효율적으로 사용하기 위함
싱글톤 방식의 주의점 : 싱글톤 객체는 무상태로 설계해야한다 -> 특정 클라이언트에 의존적인 필드가 있으면 안된다
@Configuration 에서 new 키워드로 객체를 매번 생성하고 있는 것처럼 보이지만 스프릥 컨테이너는 싱글톤 패턴을 적용하여 실제로 한 번만 객체를 생성하고 만다
스프링 핵심 원리 이해1 - 예제 만들기
프로젝트 생성
비즈니스 요구사항과 설계
회원 도메인 설계
회원 도메인 개발
회원 도메인 실행과 테스트
생각해볼 점 : MemberService가 Repository Interface와 구현체 모두에 의존하고 있음. OCP원칙을 지키고 있는것인가?
HTTP API
HTPP 메서드 종류
GET
POST
요청 데이터를 처리한다는 것은?
PUT
PATCH
DELETE
HTTP 메서드의 속성
추상(인터페이스) 뿐만 아니라 구체(구현) 클래스에도 의존하고 있다.
DIP 위반
따라서 기능을 확장해서 변경하면 소스코드도 함께 변경해야 한다. OCP 위반
-> 인터페이스에만 의존하도록 설계를 변경하자!
->> 누군가가 클라이언트에 구현 객체를 대신 생성하고 주입해주어야 한다.
애플리케이션의 전체 동작 방식을 구성(config)하기 위해, '구현 객체를 생성' 하고, '연결' 하는 책임을 가지는 별도의 설정 클래스를 만들자.
AppConfig는 애플리케이션의 실제 동작에 필요한 '구현 객체를 생성'한다.
AppConfig는 생성한 객체 인스턴스의 참조(레퍼런스)를 '생성자를 통해서 주입(연결) 해준다
생성자 주입을 통해 '의존관계에 대한 고민은 외부'에 맡기고 '실행에만 집중'하면 된다.
uiurihappy 강의명: 스프링 핵심원리 기본편 회차: 중복등록과 충돌
컴포넌트 스캔에 의해 자동으로 스프링 빈이 등록되는데, 그 이름이 같은 경우 스프링은 오류를 발생시킨다. ConflictingBeanDefinitionException 예외 발생한다. 만약 수동 빈 등록과 자동 빈 등록에서 빈 이름이 충돌되면 수동 빈 등록이 우선권을 가진다.
수동 빈 등록시 남는 로그 Overriding bean definition for bean 'memoryMemberRepository' with a different definition: replacing
자동 보다는 수동이 우선권을 가지는 것이 좋다. 하지만 현실은 개발자가 의도적으로 설정해서 이런 결과가 만들어지기 보다는 여러 설정들이 꼬여서 이런 결과가 대부분이다. 최근 스프링 부트에서는 수동 빈 등록과 자동 빈 등록이 충돌나면 오류가 발생하도록 기본 값을 바꾸었다
평일 - 매일 최소 1 강의 주말 - 토,일 중 최소 1 강의