목록전체 글 (30)
kimgusxo 님의 블로그
1. 빈(Bean)이란?스프링 컨테이너가 생성하고 관리하는 객체즉, 단순히 자바 객체지만 스프링이 책임지고 만들고 관리해주는 객체를 "빈"이라 한다.빈은 싱글톤 패턴을 가지며 thread-safe하게 설계되어야된다.@Componentpublic class MyService {}위 클래스는 컴포넌트 스캔을 통해 스프링 컨테이너가 자동으로 객체를 생성MyService클래스는 ApplicationContext 내부에서 등록된 빈으로 관리된다. 2. 컴포넌트 스캔(ComponentScan)이란?스프링은 객체를 직접 생성하지 않아도 되도록 컨테이너가 대신 관리해주는 프레임워크이다.즉, 이 "관리"의 출발점이 클래스를 탐색하고 등록하는 것이다. 2-1. 컴포넌트 스캔의 동작방식@SpringBootApplicatio..
1. 객체지향 프로그래밍1-1. 객체지향의 핵심 원칙 중 하나: 높은 응집도, 낮은 결합도응집도: 각 클래스가 자신의 역할에 충실한가?결합도: 서로 얼마나 밀접하게 연결되어 있는가?// 높은 결합도 예시public class OrderService { private final PaymentService paymentService = new PaymentService();}OrderService는 항상 PaymentService에 종속됨테스트가 어렵고 구현체 변경이 어려운 문제가 발생 2. 제어의 역전(IoC)의 등장IoC(Inversion of Control)란 객체 생성과 의존성 연결을 개발자가 아니라 프레임워크(컨테이너)가 대신 처리하는 것즉 "제어의 주체가 뒤바뀐다" 2-1. 기존 구조Orde..

1. 스프링 이전 시대의 자바 개발1-1. 자바의 복잡성자바는 강력한 OOP 언어지만 코드보다 설정과 반복 작업이 많다.문제 1: 객체를 직접 설정하고 연결해야한다.객체 간 강한 결합을 가져 변경 및 테스트가 어렵다.문제 2: 객체 생명주기 관리가 안된다.DB 커넥션을 언제 닫을지, 외부 API를 언제 초기화할지 개발자가 수동으로 관리해야한다.문제 3: 중복 코드와 설정 지옥XML파일과 인터페이스/구현체/팩토리/서비스를 조립함으로 엄청난 생산성이 저하된다. 1-2. 그래서 등장한 프레임워크들StrutsMVC 패턴 제공 -> 웹 프레임워크하지만 의존성 주입, 트랜젝션, AOP는 별도로 처리해야 하는 단점 존재.HibernateORM(Object-Relational Mapping) 처리DB 접근은 쉽게 하지..
1. DP(Dynamic Programming)이란?- 다이나믹 프로그래밍은 복잡한 문제를 더 작은 하위 문제로 나누어 해결하고 그 결과를 중복해서 다시 계산하지 않도록 저장하거나 차례차례 결과를 쌓아올리는 기법이다.- 분할정복과 비슷하지만 하위 문제가 중복되어 등장할 때 중복 계산을 제거하는것이 차이점이다. 1-1. 핵심 아이디어- 중복 부분 문제(Overlapping Subproblems): 동일한 하위 문제가 여러 번 등장하면 한 번 계산한 값을 저장해놨다가 재사용- 최적 부분 구조(Optimal Substructure): 문제의 최적 해가 하위 문제의 최적해들로 만들어져야 함 1-2. 장단점- 장점: 중복 계산을 제거하여 시간복잡도가 감소, 단계별 구현 패턴이 일정- 단점: 상태 저장용 메모리(배..