본문 바로가기

java

(4)
[Java] 6. HTTP 웹 서버 구현 - 중간 회고 다음 글은 1. HTTP 웹 서버 구현 - 클라이언트 요청과 처리부터 5. HTTP 웹서버 구현 - HTTP API 처리까지, '웹서버에 대해 잘 모르는 상태에서 HTTP 웹서버를 어떻게 개발했는지'와 '좋은 코드를 작성하기 위한 고민하고개선했는지' 회고를 해볼려고한다.개발해본적 없는 프로그램의 구현과 학습 과정1. 얄팍하게 파묻쳐 있는 개념의 인지나는 웹서버에 대해 잘 모르는 상태에서 구현함으로써, 시작부터 어려움이 꾀나 있었다. Spring 생태계도 김영한님의 스프링-입문-스프링부트 강의만 공부한 상태였다. 그래서 1. HTTP 웹 서버 구현 - 클라이언트 요청과 처리의 내용에서 볼수 있듯이, 최대한 간단하게 구현하고자 클라이언트 요청을 받고 "Hello Client!" 를 응답하는 기능부터 구현하..
[Java] 4. HTTP 웹서버 구현 - HTTP 응답 데이터 처리 2. HTTP 웹서버 구현 - 요청에 대한 응답 처리와 책임 분리에서 클라이언트의 요청 처리하는 객체의 책임을 분리를 다음과 같이 하였다. HTTP 요청 데이터 처리는 3. HTTP 웹 서버 구현 - HTTP 요청 데이터 처리에서 작성하였고, 다음으로 HTTP 응답 데이터를 처리를 담당하는 HttpResponse 객체를 구현할려고한다.HTTP 응답 데이터 생성HTTP 응답 메세지의 데이터를 어떻게 만들것인가?HTTP 응답 메세지는 다음과 같은 포맷이다.  HTTP 응답 메세지는 크게 Status Line, Response Headers, Response Message Body 구조로 분리할수 있으며, 각 구조의 여러 요소들이 존재한다. 그러므로 다음 3가지 구조를 객체로 다루어서 HTTP 응답 데이터를 ..
[Java] 3. HTTP 웹 서버 구현 - HTTP 요청 데이터 처리 2. HTTP 웹서버 구현 - 요청에 대한 응답 처리와 책임 분리에서 클라이언트의 요청 처리하는 객체의 여러 책임에 대한 분리를 다음과 같이 하였다. 이번에는 그중에서 HTTP 요청 데이터를 처리를 담당하는 HttpRequest 객체를 작성할려고한다.  아래의 코드들은 지속적인 리펙토링과 테스트를 통해서 구현된것이다. 모든 과정을 적기에는 글의 내용이 너무나 길어져, 지금까지 가장 잘 정리된 코드를 기재하였다.HTTP 요청 데이터 파싱HTTP 요청 메세지에서 데이터를 어떻게 추출할것인가?HTTP 요청 메세지는 다음과 같은 포맷이다.  HTTP 요청 메세지는 크게 Request Line, Request Headers, Request Message Body 구조로 분리할수 있으며, 각 구조의 여러 요소들이 ..
[Spring] JDK Dynamic Proxy로 EntityManager 생명주기 자동 관리 원리 구현 이전에 EntityManger와 Persistence Context 내용에 이어서, JPA를 사용한 스프링 부트 애플리케이션(전반적인 Spring 생태계 이해 (9) - JPA)에서 트랜잭션을 시작하면, 런타임 시점에 어떻게 주입했던 EntityManager 구현체를 다시 생성해서 주입하는지 알아보기 위해서 작성한 내용이다. 그리하여 JPA에서는 이를 java로 어떻게 구현했는지 알아보았다.동적으로 객체 생성과 주입인터페이스로 동적으로 EntityManager 구현체 생성 및 주입웹 애플리케이션 계층구조에서 일반적으로 Service 클래스의 메서드를 트랜잭션 범위로 설정하며, Repository 객체 생성에 EntityManager 구현체를 주입한다. 이 트랜잭션 범위 마다 런타임 시점에 새로운 Enti..