본문 바로가기

전체 글33

[Spring] 스프링 IoC/DI 지난 글에서는 스프링(Spring)이 EJB의 복잡성을 해결하기 위해 POJO라는 핵심 가치를 세우고, 이를 실현하기 위해 IoC/DI, AOP, PSA라는 3대 기술 요소를 도입하였고, 각 기술들을 어떤 목적으로 도입하였는지 알아보았다. 이번 글에서는 이 기술들 중 IoC/DI를 스프링이 어떻게 구체화하는지 그 동작 원리와 이에 따른 컨테이너와 빈이라는 핵심 개념들을 알아보도록 하자.1. 스프링 컨테이너 (Spring Container)스프링 컨테이너는 스프링에서 IoC/DI를 실현하는 주체라고 할 수 있다. 빈이라는 명칭으로 관리되는 자바 객체들에 여러 추가 기능을 부여하며, 이 객체들의 전 생명주기를 관리하는 것이 스프링 컨테이너이다.이 다이어그램은 스프링 컨테이너의 계층 구조를 단순화하여 표현한 .. 2025. 11. 25.
[Spring] 기본 개념 Spring Framework는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로, 자바 엔터프라이즈 개발을 위한 경량급 오픈 소스 프레임워크로 정의 가능하다. 이는 복잡한 엔터프라이즈 개발의 부담을 낮추고, 개발자가 비즈니스 로직에 집중할 수 있도록 도와주는 자바 진영의 가장 강력하고 대중적인 프레임워크 도구라고 할 수 있다.1. Spring의 탄생 배경새로운 기술의 등장은 곧, 어떠한 문제를 해결하기 위해 등장한다고도 볼 수 있다. 스프링이 탄생한 배경을 이해하려면, 먼저 과거 자바 엔터프라이즈 개발의 표준이었던 EJB(Enterprise JavaBeans)의 이해가 필요하다.1.1 EJB의 등장과 문제점1990년대 말에서 2000년대 초, 자바 진영의 엔터프라이즈 애플리케이션 개발 표준은 썬 .. 2025. 11. 18.
[프로그래머스-Lv2-JAVA] 하노이의 탑 1. 문제[프로그래머스 - 연습 문제 - 하노이의 탑]문제 캡처 이 문제는 유명한 퍼즐 게임인 하노이의 탑이며 원판 개수가 주어지면 마지막 기둥으로 원판을 모두 이동시키는 최소한의 이동 순서를 찾는 문제이다.2. 문제 분석2.1. 조건 확인하노이의 탑을 알고리즘으로 해결하기 위해서는 첫 번째로 명확한 조건 지정이 필요하다. 이를 정의해 보았다.문제 규칙큰 원판은 작은 원판 위에 놓을 수 없다.한 번에 하나의 원판만 옮길 수 있다.문제 상태초기 상태: 모든 원판이 1번 기둥에 쌓여 있다.종료 상태: 모든 원판이 3번 기둥에 옮겨져 있다.목표: 모든 원판이 3번 기둥까지 최소한으로 이동하는 이동 순서를 찾는다.2.2. 해결 구상기본적으로 기둥과 원판의 관계를 봤을 때 가장 먼저 떠오르는 것은 스택 자료구조와.. 2025. 5. 30.
[TypeScript] 함수 오버로드 함수 오버로드는 하나의 함수 이름으로 여러 가지 매개변수 타입과 반환 타입을 정의할 수 있게 하는 기능이다. 이는 함수의 입력 형태나 반환값이 다양한 경우 이를 명확하게 타입 시스템에 반영하여 타입 시스템의 장점을 살리기 위한 기능이라고 볼 수 있다.1. 함수 오버로드 구조타입스크립트의 함수 오버로드는 다음 두 가지를 조합하여 구현된다.함수 시그니처(선언부): 여러 개 작성 가능함수 구현부(정의부): 하나만 작성하고 마지막 함수에 구현하여야 한다.즉, 사용자 입장에서는 다양한 형태로 함수가 존재하는 것처럼 보이지만, 실제 구현은 하나로 통합된다. 타입스크립트 컴파일러는 함수 호출 시 시그니처를 바탕으로 타입 체크를 수행한다.function greet(name: string): string;function.. 2025. 5. 13.
[알고리즘] BFS BFS(Breadth-First Search)는 그래프에서 모든 노드를 넓이 우선으로 탐색하는 대표적인 완전 탐색 알고리즘이다. 이 탐색 방식은 가까운 노드부터 먼저 탐색하고, 그 다음으로 인접한 노드들을 차례차례 탐색한다. 즉, 모든 노드를 같은 깊이 기준으로 탐색한 뒤, 그 다음 깊이의 노드로 넘어가는 방식이다. 이러한 특성 때문에 최단 거리 탐색 문제에서 매우 강력한 탐색 알고리즘이라고 할 수 있다.1. BFS의 탐색 원리BFS는 DFS와 마찬가지로 그래프 탐색 알고리즘이다. 노드(정점)와 간선(연결)을 기반으로 탐색을 진행하며, 차이점은 탐색의 우선순위가 깊이(Depth)가 아닌 넓이(Breadth)에 있다는 점이다.1.1. BFS의 동작 방식BFS는 큐(Queue) 자료구조를 이용해 탐색을 진행.. 2025. 4. 24.
[프로그래머스-Lv2-JAVA] 미로 탈출 1. 문제[프로그래머스 - 연습문제 - 미로 탈출]문제 캡처 이 문제는 2차원 배열 형태로 이루어진 미로가 있으며 시작 지점, 탈출 지점, 레버의 위치가 하나씩 주어진다. 미로에는 벽이 있으며, 벽을 피해 시작 지점에서 레버를 경유하여 탈출 지점으로 이동하는 가장 최소 이동 거리를 구하는 문제이다.2. 문제 분석2.1. 문제 확인문제 자체는 굉장히 심플하다. 시작 지점에서 출발하여 레버까지의 최단거리를 이동 후, 레버에서 탈출 지점까지 최단거리로 이동하면 되는 문제이기 때문이다.이 문제에서는 이 최단거리를 구하는 것이 키포인트가 될 것으로 보인다.2.2. 최단거리 계산일단 "최단거리"라는 게 무엇인지 정의해 보자. 이 문제에서의 최단거리라 함은 어떤 A 지점에서 B 지점으로 이동할 때 모든 가능한 이동 .. 2025. 4. 17.