
단위 테스트, TDD, FIRST

JUnit vs Mockito

정의 및 동작 원리, Filter

기본 개념 1. 동시성(Concurrency) 여러 작업이 동시에 실행될 수 있는 능력 티스레딩, 비동기 프로그래밍, 병렬 처리를 포함 2. 스레드(Tread) 스레드는 프로그램의 실행 단위 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 각각의 스레드는 독립적으로 실행 3. 멀티스레딩 (Multithreading) 여러 스레드를 사용하여 여러 작업...

CI/CD CI/CD란? 애플리케이션 개발 단계부터 배포 때까지의 모든 단계를 자동화를 통해 더 효율적이고 빠르게 빈번히 배포할 수 있는 것 CI(Continuous Integration) 지속적인 통합 애플리케이션의 버그 수정이나 코드 변경이 주기적으로 빌드 및 테스트되면서 공유되는 레포지토리에 merge되는 것 CD 지속적인 서비스 제공(Contin...

1. Dockerfile 생성 및 설정 프로젝트 root 디렉토리에 생성 Maven, Gradle에 맞게 내용 작성 만약 gradle을 사용 하고 있다면, build.gradle 파일 내부에 아래 설정을 추가해줘야 한다. jar 파일이 2개가 생기며 Docker Image 가 생성되지 않을 수 있다. (Boot 2.5v 이후) gradle 버전 ...

웹 페이지를 사용자에게 전송하는 서버웹 서버는 데이터를 전송하기 위해 HTTP 프로토콜을 사용한다.사용자는 브라우저에 URL 주소를 입력하고, 웹 서버는 웹 페이지를 사용자에게 전송하고, 사용자는 웹페이지를 얻게 된다.서블릿을 관리해주는 것 (서블릿 생성(init())

스프링이 알아서 다 해준다우리가 사용하는 Spring Boot 프로젝트를 만들면 내부적으로 이와 같은 흐름이 작동한다.1\. 사용자 요청2\. DispatcherServlet (서블릿)3\. 컨트롤러(@Controller)4\. 서비스5\. 응답Spring MVC에서

서블릿을 쓰면 웹 서버(톰캣 등)가 HttpServletRequest, HttpServletResponse 객체를 자동으로 만들어준다.→ 하지만 직접 만들 땐 BufferedReader, BufferedWriter로 요청/응답을 수동으로 처리해야 한다.서블릿 컨테이너는

SpringBoot는 싱글톤 Bean을 관리하지만, 요청은 Tomcat의 스레드 풀로 처리된다. Tomcat은 미리 생성한 스레드를 재사용해 과도한 생성/소멸 비용을 줄인다. 스레드 풀은 동시 요청 처리 시 서버 리소스를 안정적으로 관리할 수 있다.
SpringBoot에서는 요청 흐름을 제어하기 위해 Session, Filter, Listener를 활용할 수 있다. Session은 사용자 상태를 유지하고, Filter는 요청 전후 로직을, Listener는 이벤트 감지를 담당한다.

Spring에서 DI는 객체 간 결합을 줄이고, 테스트 가능한 구조를 만들기 위한 핵심 원칙이다. 필드 주입은 더 이상 권장되지 않으며, 생성자 주입이 기본 전략이다. 생성자 주입은 불변 객체 설계, 명확한 책임, 테스트 용이성 모두를 만족시킨다.

Bean 생명주기 흐름> XML 설정 파싱 → 클래스 로딩 → 인스턴스 생성 → 의존성 주입 → Bean 이름 주입 → 초기화 메서드 호출 → 사용 → 컨테이너 종료 시 destroy 메서드 호출

AOP는 핵심 로직과 반복되는 부가 로직을 분리해주는 프로그래밍 기법이다. 스프링에서는 프록시 기반 AOP를 통해 로그, 트랜잭션, 예외 처리 같은 공통 기능을 깔끔하게 모듈화할 수 있다. 특히 로깅은 대표적인 AOP 활용 사례이다.

트랜잭션은 여러 작업을 하나의 단위로 묶어, 전부 성공하거나 전부 실패도록 한다. 스프링에서는 @Transactional 어노테이션을 통해 AOP 기반 트랜잭션 처리를 간편하게 구현할 수 있다.

객체지향(OOP)은 기능을 객체 단위로 나누고, AOP는 공통된 부가기능을 분리해서 따로 모듈화한다.그래서 AOP는 OOP와 전혀 다른 개념이라기보다는, 같은 목적을 다른 방향에서 실현한다.