본문 바로가기

전체 글

(108)
[12일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 스프링 웹 MVC 프레임워크 프로세스 흐름 ① 요청이 들어오게 되면 ② Dispatcher Servlet : 해당 요청을 받아 Handler Mapping을 통해 적절한 Handler(Controller)를 선택한다. ③ Handler Adapter : 적절한 Adapter를 통해 Handler(Controller)를 실행한다. ④ Controller : 해당하는 ViewName을 반환한다. ⑤ Dispatcher Servlet : View Resolver(ViewName)를 통해 View객체를 반환 받는다. ⑥ View Render를 통해 응답 값을 반환한다. 17. Web MVC framework (spring.io) 17. Web MVC framework @RequestMapping(method =..
[11일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 프런트 컨트롤러 패턴 모든 요청을 단일 handler(처리기)에서 처리하도록 하는 패턴 스프링 웹 MVC 프레임워크의 DispatcherServlet(프런트 컨트롤러 역할)이 프런트 컨트롤러 패턴으로 구현 됨. MVC 프레임워크를 만드는 기반 코드로 활용된다. 프런트 컨트롤러 실습 DispatcherServlet과 몇 가지 Controller를 만들어 모든 요청을 DispatcherServlet이 받아 적절한 Controller에게 위임한다. 의존성 설정 dependencies { // 임베디드 톰캣 implementation 'org.apache.tomcat.embed:tomcat-embed-core:8.5.42' implementation 'org.apache.tomcat.embed:tomcat-em..
[10일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) Reflection 힙 영역에 로드된 객체(클래스 타입)를 통해 필드/메소드/생성자를 접근 제어자에 상관 없이 사용 가능하도록 지원하는 API 런타임 시점에 동적으로 특정 클래스의 정보를 추출해 낼 수 있는 프로그래밍 기법이다. 주로 프레임워크 or 라이브러리 개발 시에 사용한다. https://www.baeldung.com/reflections-library Reflection을 사용하는 프레임워크 & 라이브러리 • Spring 프레임워크(예 : DI) • Test 프레임워크(예 : JUnit) • JSON Serialization/Deserialization 라이브러리(예 : Jackson) 등 요구사항 @Controller 애너테이션이 설정된 모든 클래스를 찾아 출력한다. 의존성 설정 depende..
[9일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) JDBC 프로그래밍 실습 프로젝트 생성 dependencies 설정 implementation('com.zaxxer:HikariCP:5.0.1') implementation('org.springframework:spring-jdbc:5.3.22') testImplementation('org.assertj:assertj-core:3.22.0') testImplementation('com.h2database:h2:2.1.214') 간단한 CRUD ① SetUp Method 생성 테스트 코드를 실행하기 전 수행해야 하는 작업을 작성한다(테이블 생성 or 초기 데이터 수행). sql 파일을 읽어 테이블을 생성한다. sql 파일을 실행한다.(이때, 데이터 소스도 함께 가져와야 한다.) ② 데이터 소스를 받아오기 ..
[8일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) Servlet 인터페이스 tomcat을 호출하기 위해 Servlet을 구현한 Servlet 인터페이스를 만든다.(호출 규약) Servlet 컨테이너가 Servlet 인터페이스의 메서드들을 호출한다. Servlet 인터페이스 메서드 메서드 종류 : 라이프 사이클 관련 메서드, 그 외 라이프 사이클 관련 메서드 init(), service(), destroy() init() : Servlet 컨테이너가 Servlet을 생성한 다음에 초기화 작업을 수행하기 위해 호출하는 메서드(처음 한 번만 호출) service() : Servlet 컨테이너가 클라이언트 요청이 들어올 때마다 호출하는 메서드 destroy() : Servlet 컨테이너가 종료될 때 호출하는 메서드(자원 해제) 그 외 getServletConf..
[7일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 계산기 웹 애플리케이션 요구사항 • Step1 : 사용자 요청을 메인 Thread가 처리하도록 한다. • Step2 : 사용자 요청이 들어올 때마다 Thread를 새로 생성해서 사용자 요청을 처리 하도록 한다. • Step3 : Thread Pool을 적용해 안정적인 서비스가 가능하도록 한다. 문제점 Step1 : 사용자 요청을 메인 Thread가 처리하도록 한다. 메인 Thread의 작업이 오래 걸리면 다음 요청이 메인 Thread가 끝날 때까지 기다려야 한다. Step2 : 사용자 요청이 들어올 때마다 Thread를 새로 생성해서 사용자 요청을 처리 하도록 한다. 동시 접속자의 수가 많아지면 많아질수록, 많은 쓰레드가 생성된다.(비용적인 측면, 성능 저하) 이로 인해 CPU Context Switch..
[6일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 내용 수정 중입니다ㅠㅠ 계산기 프로그램 웹 애플리케이션 프로젝트 생성 dependencise 설정 implementation 'ch.qos.logback:logback-classic:1.2.3' testImplementation 'org.assertj:assertj-core:3.23.1' dependencies { implementation 'ch.qos.logback:logback-classic:1.2.3' testImplementation platform('org.junit:junit-bom:5.9.1') testImplementation 'org.junit.jupiter:junit-jupiter' testImplementation 'org.assertj:assertj-core:3.23.1' } 요구..
[5일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 객체지향 프로그래밍 실습(음식점 주문)과 웹 애플리케이션 개념을 알아보자. 내용 수정 중입니다ㅠㅠ 객체지향 프로그래밍 실습 : 음식점에서 음식을 주문하는 과정 요구사항 구현해야 할 요구사항은 다음과 같다. 요구사항 1. 도메인을 구성하는 객체를 정의한다. 2. 객체들 간의 관계를 설정한다. 3. 동적인 객체를 정적인 타입으로 추상화하여 도메인 모델링을 설계한다. 4. 협력를 설계한다. 5. 객체들을 포괄하는 타입에 적절한 책임을 할당한다. 6. 구현 1. 도메인을 구성하는 객체를 정의한다. 음식점에서 음식을 주문하려면 어떤 객체들이 등장해야 될지를 먼저 생각해야 한다. 손님, 메뉴판, 떡볶이, 어묵, 순대, 요리사, 요리 2. 객체들 간의 관계를 설정한다. 손님 -- 메뉴판 : 손님은 메뉴판을 보고 주문..