@MinSang
지식과 경험을 기록하는 TIL 저장소

디스패처 서블릿. 코드와 함께 이해하기

September 16, 2024

클라이언트에서 처음 Swagger 페이지를 GET 요청했을 때 흐름을 적어봤습니다. DispatcherServlet 요청 흐름 클라이언트의 요청은 서블릿 컨테이너에서 필터들을 지나 스프링 컨텍스트내 이 가장 먼저 요청을 받습니다. 의 메소드에서 웹 요청 처리가 진행됩니다. 이때 에 여러 속성들을 넣는 작업을 한 후, 를 호출합니다. 작업에서는 …


트랜잭션

September 01, 2024

Transaction 이란 트랜잭션이란, 하나 이상의 SQL문을 묶은 작업단위를 말합니다. 그리고 이 작업단위 범위는 사람이 정한 기준에 따라 정합니다. 그리고 이렇게 정한 트랜잭션은 4가지 특징이 있습니다. 원자성은 트랜잭션 범위 안에 모든 SQL 문이 전부 다 데이터베이스에 정상적으로 반영하던가, 아니면 전혀 반영되지 않게 합니다. 일관성은 트…


IoC에서 어떻게 빈이 생성되는가

August 29, 2024

이때 설명하기 쉽게 BookChallengeApplication을 시작점으로 하겠습니다. 애플리케이션 컨택스트 생성 서블릿 기반인 경우, context의 구현체는 빈 등록 과정 @Configuration 클래스 처리 의 메소드에서 다음과 같은 과정이 진행됩니다 이 과정에서 클래스들을 찾고 처리합니다. 이는 이 붙은 클래스를 포함합니다. 그 후, …


람다에서 사용하는 외부 변수가 final 이어야 하는 이유

August 27, 2024

람다는 메소드 내에서 선언이 되는데, 이 메소드에 있던 지역변수, 파라미터변수를 람다도 역시 사용이 가능합니다. 또한 람다는 다른 스레드에서 사용할 수 있기 때문에 해당 지역변수나 파라미터 변수에 접근이 가능하기 때문에 동시성 문제가 일어날 수 있어서 final로 선언해야합니다. (자바 8부터는 적지않아도 final로 자동 생성) 근데 의문이 드는게 지…


3장 템플릿

August 25, 2024

1장 복습 초난감 DAO 코드에 DI를 적용해나가는 과정을 통해서 관심이 다른 코드를 다양한 방법으로 분리하고, 확장과 변경에 용이하게 대응할 수 있는 설계구조로 개선하는 작업을 했습니다. OCP란, 어떤 부분은 변경을 통해 그 기능이 다양해지고 확장하려는 성질이 있고, 어떤 부분은 고정되어 있고 변하지 않으려는 성질이 있음을 보여줍니다. 변화의 특성이…


2장 테스트

August 24, 2024

테스트란 테스트란, 본인이 예상하고 의도했던 대로 코드가 정확히 동작하는 지를 확인해서, 만든 코드를 확신할 수 있게 해주는 작업입니다. 또한, 테스트의 결과가 원하는 대로 나오지 않는 경우에는 코드나 설계에 결함이 있다는것을 알 수 있습니다. 이를 통해 코드의 결함을 제거해가는 작업, 일명 디버깅을 거치게 되고, 결국 최종적으로 테스트가 성공하면 모든…


Spring에서 master/slave 구성하기

August 22, 2024

0. 실행 환경 SpringBoot 3.3.2 MySQL 8.1 (Docker 이용) Mac OS 1. DockerCompose 구성 Docker Compose 파일은 MySQL 마스터와 슬레이브 인스턴스를 설정합니다. 2. 마스터와 슬레이브를 위한 설정 파일을 생성 마스터 (./master/my.cnf) 슬레이브 (./slave/my.cnf) 3. Do…


1장 오브젝트와 의존관계

August 21, 2024

스프링이란 스프링은 객체지향 설계와 구현에 관해 특정한 모델과 기법을 억지로 강요하지 않습니다. 하지만 객체를 어떻게 효과적으로 설계하고 구현하고, 사용하고, 이를 개선해나갈 것인가에 대한 명쾌한 기준을 마련해줍니다. 동시에 스프링은 객체지향 기술과 설계,구현에 관한 실용적인 전략과 검증된 베스트 프렉티스를 평범한 개발자도 자연스럽고 손쉽게 적용할 수…


멀티모듈

August 21, 2024

멀티 모듈이 왜 중요할까요? 멀티 모듈 프로젝트는 초기에 이루어져야 하는 일련의 설계 과정이다. (마틴 파울러) 멀티 모듈 프로젝트는 요소의 구조와 그 관계에 관한 것 서비스가 커질수록 나중에 구조를 변경하기 어렵고, 이는 곧 리스크를 줄이기 위한 시작입니다. 모듈을 나누는 기준 시스템에 독립적인 공통 코드 분리하기 특정 시스템에 종속되지 않고, 다른 …


5주차 인터뷰 질문 대비

August 18, 2024

1. 동기 & 비동기 & 블로킹 & 논블로킹 동기와 비동기는 호출되는 함수의 작업 완료 여부를 누가 신경쓰냐에 대한 관점입니다. 동기는 호출하는 함수가 호출된 함수의 작업 완료를 신경씁니다. 이는 작업의 순차적 실행을 보장합니다. 비동기는 호출된 함수만이 작업 완료를 신경씁니다. 이를 통해 다른 작업들이 병렬적으로 실행될 수 있습니다. 블로킹과 논블로킹은…