일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- spring boot
- head first
- spring
- Design Pattern
- 스트림
- 자바의 신
- 자바8인액션
- CQRS
- Was
- Java
- Clean Code
- web
- Template Method Pattern
- Java in action
- SERVLET
- spring Batch
- Stream
- 자바
- domain
- AWS101
- 클린코드
- 패스트캠퍼스
- ddd
- 디자인 패턴
- Java8
- Java8 in action
- facade pattern
- jsp
- 자바8
- Java 8 in action
- Today
- Total
목록분류 전체보기 (35)
주난v 개발 성장기

도메인 "서점" 도메인 회원, 주문, 결제, 배송 하위 도메인 존재 도메인 모델 패턴 사용자 인터페이스, 표현 계층 사람, 외부 API 등 에게 요청을 받고, 정보를 보여줌 사용자의 세션을 관리 응용 계층 비즈니스 로직 X 각 도메인 계층에 업무를 위임하고, 이를 조합하여 실행 도메인 계층 비즈니스 로직 인프라 스트럭쳐 계층 RDB SQS, MQTT API Q ) 새로운 요구사항 출고 전에 배송지를 변경 할 수 있다. 주문 취소는 배송전에 할 수 있다. 이 2가지 요구사항을 각각 출고 서비스, 주문 서비스, 배송 서비스에서 구현을 해도 할 수는 있지만, 유지보수가 어렵고 한 쪽에서 정책이 바뀐다면 모든 코드를 다 확인해야 한다. public class Order { private OrderState st..
MongoDB, Redis만을 사용하게 되면서, RDB에 붙을 이유가 사라졌다. 그래서 jdbc 설정을 지웠더니...아래와 같은 에러가 발생.. Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class application.yml에 DB정보가 필수이다. 메인클래스에 붙은 @SpringBootApplication > @EnableAutoConfiguration로 인해서 기본 설정이 잡혀 있기 때문이다. 그래서, 일단은 빈값으로 넣었더니..그래도 동일 문제가 발생하였고,..
자바의 가장 단위는 '클래스' '클래스'는 상태와 행동이 있어야만 한다. * 자바 컴파일 및 실행 절차 (바이트 코드) (바이트 코드) (기계어) 소스(.java) ---------------> 컴파일러 ---------------> 디스크 ---------------> JVM ---------------> 운영체제 컴파일 : 내가 짠 코드는 컴퓨터가 이해할 수 있도록 엮어주는 작업 --> 컴파일을 마친 클래스 파일은 JVM에서 읽어들여 운영체제에서 실행한다. * 클래스와 객체를 구분하자! 각각의 실제 사물을 만들기 위한 것을 객체(Object) 혹은 인스턴스라고 한다. Car dogCar = new Car(); Car catCar = new Car(); --> dogCar, catCar 객체가 생성된다..
서블릿 정리 업무 : 클라이언트로부터의 요청을 받아 응답하는 것 서블릿 관리 주체 : 컨테이너 ex)Tomcat 클라이언트의 요청 시 컨테이너는 새로운 스레드를 생성하거나, 스레드 풀에서 가져와서, 서블릿의 service() 호출 매번 새로운 request, response 객체 생성(컨테이너가 함) 즉, 요청한 횟수만큼 스레드가 생성된다. ==> 모든 요청은 자신만의 스레드 / 스택에 할당 서블릿의 일생 컨테이너 서블릿 클래스 서블릿 객체 ——-> 클래스 로딩 1. 컨테이너가 시작할 때(톰캣이 실행될 때) 2. 최초 클라이언트 접근 시 ———————-> 서블릿 인스턴스(기본 생성자 실행) ———————-> init() 초기화 1. 서블릿 일생에서 단 한번만 호출 ———————-> service() ——..
학습목표 서블릿의 생명주기, 목적에 대한 설명이 가능하다. 새로운 도구 Container 등장! 서블릿은 '그'의 도움이 필요하다. 1. 요청이 들어오면 누군가 서블릿을 초기화해서, 요청을 처리할 새로운 스레드를 만들어야한다. 2. HttpServletRequest, HttpServletResponse를 생성하여 넘겨준다. 3. 서블릿의 doPost() or doGet()을 호출 4. 서블릿 생성, 소멸에 대한 자원 관리 컨테이너 (ex. Tomcat) * Apache (웹 서버)가 사용자로부터 서블릿에 대한 요청을 받으면, 컨테이너에게 이 요청을 넘긴다. 컨테이너의 혜택 1. 커뮤니케이션 지원 * 웹 서버와 서블릿이 통신할 수 있는 API 제공 2. 생명주기 관리 * 서블릿의 탄생과 죽음(가비지 컬렉션..
학습목표 웹 클라이언트 - 웹 서버간의 커뮤니케이션에 대해서 알아보자. 목표 더 이상 코더가 아닌 개발자로 성장하고 싶다. 웹의 동작, 라이프 사이클, 스레드 관리 등에 대해 알아보자. 웹 서버는 무슨 일을 하는가? 단순하게 보면 클라이언트의 요청을 받아서, 응답을 내려주는 역할을 한다. 웹 클라이언트는 무슨 일을 하는가? 서버에게 요청을 보내고, 결과를 화면에 출력하는 역할을 한다. Http 프로토콜이란? 프로토콜 : 서버와 대화하기 위해 사용하는 커뮤니케이션(ex. http) Http는 TCP / IP 기반으로 한 지점에서 다른 지점으로 요청과 응답을 전송한다. 요약 : 요청과 응답의 끊임 없는 주고 받음. GET 요청 : URL 뒤에 파라미터로 붙는다. & 이용 단점 : 화면에 파라미터가 다 보이고..
필터 필터는 자바 컴포넌트 중간에서 요청을 가로챈다. Dispatcher Servlet 이전에..(service() 메소드 호출 전에) 장점 : 아무도 눈치채지 못한다. Request / Response 필터 Request Filter 보안 체크 헤더와 바디 체크 요청 감시 및 기록 Response Filter 응답 스트림 압축 새로운 응답, 추가 수정 필터와 서블릿은 유사하다. 컨테이너가 API를 알고 있다. 컨테이너가 생명주기를 관리한다. doFilter() DD(web.xml에 설정) 구현 implements Filter 필터의 생명주기 init() -> doFilter() -> destory() init() : 설정 doFilter() : 필터 기능 구현 destory() Filter Chain ..
등장 배경 웹 서버는 몇번을 요청을 보냈는지, 응답을 보냈는지 기억을 하지 못한다. 근데, 때로는 이를 기억해야할 필요가 있다.(결제, 장바구니) 컨테이너는 클라이언트를 어떻게 구분하나? HTTP 프로토콜은 무상태 연결 브라우저 - 서버에 연결 - 요청 전달 - 응답 - 연결 해제 이러한 요청이 유지되는 것이 아니기 때문에 컨테이너는 새로운 클라이언트로부터 요청이 들어왔다고 인식한다. 유일한 세션ID가 필요하다. 클라이언트가 최초 요청을 보낼 때, 컨테이너는 클라이언트의 유일한 세션 ID를 생성한다. 그리고 이 값을 response에 전달한다. 다음 요청부터는 이 세션 ID와 함께 요청을 한다. ==> 이를 처리하는 일반적인 방법은 쿠키 클라이언트가 쿠키 사용을 막는다면? 백업으로 URL을 재작성한다, ..