📖/spring(김영한)

📖/spring(김영한)

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 1일차

섹션0 소개 강의 소개 - 섹션1 웹 애플리케이션 이해 웹 서버, 웹 애플리케이션 서버 웹 서버(Web Server): HTTP 기반으로 동작하는 서버. 정적 리소스와 기타 부가기능을 제공한다. HTML, CSS, JS, 이미지, 영상 등등을 다룸 ex) NGINX, APACHE 웹 애플리케이션 서버(WAS, Web Application Server): HTTP 기반으로 동작하는 서버. 웹 서버 기능(정석 리소스 제공 등)에 더해서 프로그램 코드를 실행해 애플리케이션 로직을 수행함. 웹 서버에 비해서 애플리케이션 코드를 실행하는데 더 특화됨. 동적 HTML, HTTP API(JSON), 서블릿, JSP, 스프링 MVC 등을 다룸 ex) 톰캣, Jetty, Undertow 웹 시스템은 주로 Web Serv..

📖/spring(김영한)

모든 개발자를 위한 HTTP 웹 기본 지식 3일차

섹션7 HTTP 헤더1 - 일반 헤더 HTTP 헤더 개요 header field = field-name:OWSfield-valueOWS (OWS: 띄어쓰기 허용) HTTP 헤더의 용도 HTTP 전송에 필요한 모든 부가정보를 가지고 있음 ex) 메시지 바디의 내용, 메시지 바디의 크기, 압축 ,인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보 등등 표준 헤더가 매우 많음 필요시 임의의 헤더를 추가할 수 있음 RFC2616(과거) 버전 HTTP 헤더 General 헤더: 메시지 전체에 적용되는 정보 Request 헤더: 요청 정보 Response 헤더: 응답 정보 Entity 헤더: 엔티티 바디 정보 HTTP 바디 메시지 본문(message body)은 엔티티 본문(entity body)을 전달하는데 사..

📖/spring(김영한)

모든 개발자를 위한 HTTP 웹 기본 지식 2일차

섹션4 HTTP 메서드 HTTP API를 만들어보자 요구사항 회원 목록 조회 회원 조회 회원 등록 회원 수정 회원 삭제 URI 설계 URI 설계 /read-member-list /read-member-by-id /create-member /update-member /delete-member ⛔️위 uri는 리소스 식별이 전혀 되지 않는다 회원을 등록하고 수정하고 조회하는게 리소스가 아니다 회원이라는 개념 자체가 리소스다 그럼 리소스를 어떻게 식별하는게 좋을까? 회원에 대한 동작은 모두 배제하고 회원이라는 리소스만 식별하면 된다 즉 회원 리소스를 uri에 매핑시킨다 리소스를 식별해 uri를 설계하면 (참고: 계층 구조상 컬렉션으로 보고 복수단어 사용 권장) 회원 목록 조회 → /members 회원 조회 ..

📖/spring(김영한)

모든 개발자를 위한 HTTP 웹 기본 지식 1일차

섹션0 소개 소개영상 - 섹션1 인터넷 네트워크 인터넷 통신 IP(인터넷 프로토콜) IP의 역할 지정한 IP 주소에 데이터 전달 패킷이라는 통신 단위로 데이터 전달 IP 프로토콜의 한계 비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷이 전송됨 비신뢰성: 중간에 패킷이 사라지거나 패킷이 순서대로 전송되지 않을 수 있음 프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상일 경우 구분이 어려움 TCP, UDP / PORT - DNS DNS(Domain Name System): 도메인 명을 IP주소로 변환 섹션2 URI와 웹 브라우저 요청 흐름 URI URI(Uniform Resource Identifier): Uniform, 리소스를 식별하는 통일된 방식. Resou..

📖/spring(김영한)

스프링 핵심 원리 - 기본편 7일차

섹션9 빈 스코프 프로토타입 스코프 - 싱글톤 빈과 함께 사용시 문제점 스프링 컨테이너에 프로토타입 스코프의 빈을 요청하면 항상 새로운 객체 인스턴스를 생성해서 반환한다. 하지만 싱글톤 빈과 함께 사용할 때는 의도한대로 잘 동작하지 않으므로 주의해야 한다. 프로토타입 빈 직접 요청 스프링 컨테이너에 프로토타입 빈 직접 요청1 클라이언트A는 스프링 컨테이너에 프로토타입 빈을 요청한다 스프링 컨테이너는 프로토타입 빈을 새로 생성해서 반환(x01)한다 해당 빈의 count 필드 값은 0이다. 클라이언트는 조회한 프로토타입 빈에 addCount()를 호출하면서 count 필드를 +1한다. 결과적으로 프로토타입 빈(x01)의 count는 1이 된다 스프링 컨테이너에 프로토타입 빈 직접 요청2 클라이언트A는 스프링..

📖/spring(김영한)

스프링 핵심 원리 - 기본편 6일차

섹션8 빈 생명주기 콜백 빈 생명주기 콜백 시작 데이터베이스 커넥션 풀이나 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면 객체의 초기화와 종료 작업이 필요하다 스프링 빈은 객체를 먼저 생성하고 의존 관계를 주입한다(생성자 주입 제외) 따라서 초기화 작업은 읜존 관계 주입이 모두 완료되고 난 다음에 호출해야 한다. 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초괴화 시점을 알려주는 다양한 기능을 제공한다. 또한 스프링은 스프링 컨테어니거 종료되기 직전에 소멸 콜백을 준다 따라서 안전하게 종료 작업을 진행할 수 있다. 스프링 빈의 이벤트 라이프 사이클 스프링 컨테이너 생성 → 스프링 빈 생성 → ..

📖/spring(김영한)

스프링 핵심 원리 - 기본편 5일차

섹션6 컴포넌트 스캔 필터 includeFilters: 컴포넌트 스캔 대상을 추가로 지정한다 excludeFilters: 컴포넌트 스캔에서 제외할 대상을 지정한다 이후 실습 중복 등록과 충돌 컴포넌트 스캔에서 같은 빈 이름을 등록하면 어떻게 될까? 다음 두 상황이 있다 자동 빈 등록 vs 자동 빈 등록 컴포넌트 스캔에 의해 자동으로 스프링 빈이 등록되는데, 그 이름이 같은 경우 스프링은 ConfictingBeanDefinitionException 예외를 발생시킨다 수동 빈 등록 vs 자동 빈 등록 만약 수동으로 등록한 빈의 이름과 자동으로 등록한 빈의 이름이 충돌되면 수동으로 등록한 빈이 우선시되고 수동 빈이 자동 빈을 오버라이딩 해버린다 그러나 최근 스프링 부트에서는 수동 빈 등록과 자동 빈 등록이 충..

📖/spring(김영한)

스프링 핵심 원리 - 기본편 4일차

섹션4 스프링 컨테이너와 스프링 빈 스프링 빈 조회 - 상속 관계 빈을 조회할 때 부모 타입으로 조회하면 자식 타입도 함께 조회한다. 그래서 모든 자바 객체의 최고 부모인 Object타입으로 조회하면 모든 스프링 빈을 조회한다 package hello.core.beanFind; import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscountPolicy; import hello.core.discount.RateDiscountPolicy; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.be..

📖/spring(김영한)

스프링 핵심 원리 - 기본편 3일차

섹션3 스프링 핵심 원리 이해2 - 객체 지향 원리 적용 AppConfig 리팩터링 입문서부터 아래 코딩이 왜 가능한지 궁금했는데 디자인패턴이라고 한다. public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } private static MemoryMemberRepository memberRepository() { return new MemoryMemberRepository(); } public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discountPolicy()); } public DiscountPo..

📖/spring(김영한)

스프링 핵심 원리 - 기본편 2일차

섹션2 스프링 핵심 원리 이해1 - 예제 만들기 회원 도메인 개발, 회원 도메인 실행과 테스트, 주문과 할인 도메인 설계 실습 주문과 할인 도메인 개발 협력 관계를 정의할 때 역할과 구현을 분리해서 자유롭게 구현 객체를 조립할 수 있게 설계하는 것이 좋다. 덕분에 회원 저장소는 물론이고, 할인 정책도 유연하게 변경할 수 있다. 주문과 할인 도메인 실행과 테스트 실습 섹션3 스프링 핵심 원리 이해2 - 객체 지향 원리 적용 새로운 할인 정책 개발 @DisplayName(""): 파라미터값으로 테스트할 메서드를 문장으로 요약할 수 있다. 새로운 할인 정책 적용과 문제점 새로운 할인 정책인 정률 할인 정책을 적용하려면 객체 생성을 새롭게 해야 한다. 이로 인해 발생하는 문제점이 있다. DIP: 주문 서비스 클..

모팔구
'📖/spring(김영한)' 카테고리의 글 목록