분류 전체보기

    3. JAVA로 아주 간단한 WAS와 Spring MVC Framework 만들기

    WAS란 Socket과 HTTP 구현 Servlet Container & Spring Container 구현 Servlet 구현 MVC 구현 Servlet Container 구현 Servlet Container란 서블릿 컨테이너는 브라우저와 같은 클라이언트로부터 들어오는 요청을 받아서 서블릿을 동작시켜 주는 일을 맡는다. 서블릿은 웹 애플리케이션이 시작될 때 미리 만들어둔 웹 애플리케이션 컨텍스트에게 빈 오브젝트로 구성된 애플리케이션의 기동 역할을 해줄 빈을 요청해서 받아둔다. 그리고 미리 지정된 메소드를 호출함으로써 스프링 컨테이너가 DI 방식으로 구성해 둔 애플리케이션의 기능이 시작되는 것이다. RequestHandler 앞서 구현한 WebServer에서 RequestHandler 인스턴스를 생성하여..

    2. JAVA로 아주 간단한 WAS와 Spring MVC Framework 만들기

    WAS란 네트워크 연결 (with Socket) 구현 Servlet Container & Spring Container 구현 Servlet 구현 MVC 구현 구현 코드 GitHub - leelee31/was: WAS 구조와 Spring MVC 동작 학습용 프로젝트 WAS 구조와 Spring MVC 동작 학습용 프로젝트. Contribute to leelee31/was development by creating an account on GitHub. github.com 네트워크 연결 (with Socket) 구현 Web Application Server, 서버를 구현한다는 것은 무엇일까? '클라이언트/서버'는 컴퓨터 간의 관계를 역할로 구분하는 개념이다. 서버는 서비스를 제공하는 컴퓨터이고, 클라이언트는 ..

    1. JAVA로 아주 간단한 WAS와 Spring MVC Framework 만들기

    WAS란 네트워크 연결 (with Socket) 구현 Servlet Container & Spring Container 구현 Servlet 구현 MVC 구현 프로젝트 목적 WAS와 Spring MVC Framework는 자바를 배우고 나서부터 사용해 왔지만 대략적인 구조만 알고 있었다. 구조로 인한 에러를 여러 번 겪다 보니 언젠간 직접 구조를 만들면서 학습해 봐야겠다고 생각했다. 하지만 뭐부터 해야 할지 막막함이 커 시작하기까지 오랜 시간이 걸렸다. 이 학습 프로젝트가 누군가의 막막함을 해소하는 데 작게나마 도움이 되었으면 좋겠다. 구현 코드 GitHub - leelee31/was: WAS 구조와 Spring MVC 동작 학습용 프로젝트 WAS 구조와 Spring MVC 동작 학습용 프로젝트. Cont..

    커피 주문 서비스를 객체 지향으로 설계해보기 with Java

    프로젝트의 목적 지난 3년간 업무에서 접했던 코드들은 객체 지향과는 거리가 멀었다. Service단이나 DAO는 추상화가 되어있었지만 대부분의 데이터는 Map으로 관리해야 했다. 자바라는 언어에 관심을 갖게 된 계기가 '객체 지향'이었기 때문에 마음속엔 항상 아쉬움이 있었다. Map으로 데이터를 관리하는 건 어떨까? 예를 들어 customer에 name, address, phone number라는 속성이 있다고 하자. 컨트롤러는 화면으로부터 customer 정보가 담긴 Map 타입 파라미터를 받는다. 컨트롤러에서 customer가 가진 속성을 확인하려면 디버깅을 하거나 for문으로 Map 내부를 모두 print 해봐야 한다. 그뿐만이 아니다. 실수로 map.get("nmae")으로 오타를 내서 에러가 날..

    JVM 명세 - Run-Time Data Areas

    공식 JVM 명세 The Java Virtual Machine Specification, Java SE 11 Edition 문서이고 번역은 파파고로 했다. -> 표시 뒤 문장은 내가 단 주석이다. 명세 중 JVM에서 다루는 데이터 유형과 Run-time Data Areas에 대한 내용이다. JVM이란? JVM은 추상적인 컴퓨팅 머신이다. 실제 컴퓨팅 머신처럼, 그것은 명령어 세트를 가지고 있고 실행 시 다양한 메모리 영역을 조작한다. JVM은 자바 프로그래밍 언어에 대해 전혀 알지 못하며, 특정 바이너리 형식, 클래스 파일 형식만 알고 있다. 클래스 파일에는 Java Virtual Machine 명령(또는 바이트 코드)과 기호 테이블 및 기타 보조 정보가 포함되어 있습니다. 형식 및 데이터 유형 1. c..

    테스트 코드와 의존성 주입

    톰 롱의 를 읽다가 메모 테스트 코드 작성 시 의존성 주입 사용에 대해 설명하기 위한 예시가 이메일 발송과 관련되어 있다. 이메일 발송 기능이 들어가는 테스트 코드를 작성했던 개인적인 경험(흑역사)이 떠올랐다. 당시 작성했던 코드의 문제를 깨달은 과정을 적어본다. 작가는 아래 두 클래스의 예를 들어 의존성 주입을 사용하면 테스트 용이성이 크게 향상된다고 한다. 의존성을 주입하지 않은 클래스 (not good) // 고객에게 송장 리마인더를 보내는 클래스 class InvoiceReminder { private final AddressBook addressBook; private final EmailSender emailSender; // 여기를 보자! // 의존 객체가 생성자에서 생성된다. // 하드 코..

    DB 계층 구조 설계 - 클로저 테이블 패턴

    계층 구조인 조직도 테이블을 설계하게 되었다. 0. 기존에 접하던 테이블 구조 테이블 하나 id 컬럼 | 부모_id 컬럼 | 기타 컬럼 계층형 쿼리 사용 프로젝트에서 자주 보던 계층형 쿼리는 한 번에 이해하기에 어렵다고 느꼈었다. 계층이 깊은 경우는 더더욱. 나는 이해하기 쉬운 코드가 좋다. 이번에 테이블 설계를 하면서 이해하기 쉬운 쿼리를 쓸 수 있는 방법이 없나 찾아봤다. 그러다 빌 카윈 Bill Karwin이라는 개발자의 아래 자료를 보게 되었다. 자료에 대한 간단한 요약과 적용한 결과(MySQL)를 공유하고자 한다. https://www.slideshare.net/billkarwin/models-for-hierarchical-data Models for hierarchical data Tree-l..

    자바로 간단한 http 웹 서버 구현

    자바지기님의 유튜브 영상과 자료를 참고하여 실습을 진행한다. 기본으로 제공되는 프로젝트가 있으며 요구사항에 맞춰 코드를 발전시킨다. 요구사항마다 힌트가 있으나 우선 스스로 구현 방법을 생각해본다. https://www.youtube.com/watch?v=qgFVj916nX8&list=PLqaSEyuwXkSqV88SwDxuY56xmj6KsmzRN&index=1 https://www.slideshare.net/javajigi/http-web-server HTTP web server 구현 자바 기반으로 web server를 직접 구현하면서 HTTP 동작 원리에 대해 이해한다. www.slideshare.net 개발 환경 설정 지난 번의 간단한 자바 통신 구현에서 봤던 내용들이다. 프로젝트(위 슬라이드에 깃허브..