✅1. DI란 무엇인가?"DI(Dependency Injection, 의존성 주입)"은 객체가 의존하는 객체를 직접 생성하지 않고, 외부에서 주입 받는 설계 방식이다. DI는 DIP(의존 역전 원칙)을 실현하는 핵심 수단이며Spring의 핵심 원리 중 하나인 IoC(제어의 역전)를 구체적으로 구현하는 방법이기도 하다.2. Spring에서 DI는 어떻게 동작하는가?Spring은 ApplicationContext가 Bean을 생성하고,의존성 있는 객체를 자동으로 찾아서 주입한다.Bean 등록 방식에 따라 주입 방식이 다르게 동작할 수 있다.컴포넌트 스캔 기반 (@Component, @Service, @Repository)Java Config 기반 (@Bean 메서드)@Autowired나 여러 Bean이 있을..
Spring의 핵심은 결국 "Bean 관리"이다.이번 포스팅에서는 단순한 순서를 넘어서, Bean의 생성 -> 초기화 -> 사용 -> 소멸에 이르는 전 과정을 메서드, 인터페이스, 어노테이션, 내부 메커니즘까지 완전히 정복할 수 있도록 정리하겠다. ✅1. Spring Bean 이란?Spring Bean은 Spring IoC 컨테이너가 관리하는 객체이다.즉, 개발자가 new로 만들지 않고, Spring이 대신 생성하고 관리하는 객체가 Bean이다. @Componentpublic class UserService { ... }위 클래스는 컴포넌트 스캔 대상이 되어 Bean으로 등록된다.다른 객체에서 @Autowired, @Inject, @Bean 등을 통해 주입(Injection) 받을 수 있다.🌀 2. S..
✅1. Spring Framework란?Spring은 자바 기반의 엔터프라이즈 애플리케이션을 만들기 위한 경량화된 프레임워크이다.핵심 철학은 "객체 간의 결합도를 낮추고, 유연하고 확장 가능한 구조"를 만드는 것에 있다. 핵심 철학을 구성하는 키워드IoC (제어의 역전)DI (의존성 주입)AOP (관점 지향 프로그래밍)2. IoC - Inversion of Control (제어의 역전) 📌 개념객체의 생성과 생명주기 관리를 "개발자가 아니라 컨테이너(Spring)가 대신하는 것"개발자가 제어하던 객체 생성/연결을-> 스프링 컨테이너가 역으로 제어한다는 개념 ✅왜 중요한가?객체 간의 강결합을 제거애플리케이션 전체 흐름을 중앙 컨테이너가 제어테스트와 유지보수가 쉬워짐3. DI - Dependency Inj..
SOLID 원칙은 유지보수성, 확장성, 유연성, 테스트 용이성을 갖춘 객체지향 설계를 위한 핵심 5대 원칙이다.이 원칙을 제대로 이해하고 실무에 적용하면, 요구사항 변경에도 끄떡없는 탄탄한 시스템을 만들 수 있다. 1. SRP - 단일 책임 원칙 (Signle Responsibility Principle) 📌 정의"하나의 클래스는 하나의 책임만 가져야 한다."정확히 말하면 클래스는 오직 하나의 변경 이유만 가져야 한다. 🎯 왜 중요한가?여러 책임을 가진 클래스는 변경 범위가 커짐하나의 책임이 바뀔 때 전혀 관련 없는 기능까지 깨질 위험있음테스트가 어려워지고 응집도가 낮아짐❌ 위반 예시public class ReportManager { void generateReport() { ... } v..
1. IT Consulting이란?정보기술 분야에 대한 전문 조언과 서비스를 제공하는 활동 IT 컨설턴트에게 필요한 역량고객사 프로세스 및 정보시스템에 대한 이해를 바탕으로 전략과 추진과제를 수립하기 위한 아래 역량 필요논리적 사고IT 관련 지식커뮤니케이션리더십사업관리 역량2. ISP란?Information Strategy Planning의 약자로 정보전략계획은 조직의 중장기 정보화 사업에 대한 계획을 수립일반적으로 기업은 중장기 계획을 몇년마다 수립하는가?금융/유통/통신 2~3년, 제조 3~5년, 공공 5~10년IT컨설팅 & 정보전략계획 오해와 진실정보전략계획은 컨설팅 프로젝트는 소프트웨어/시스템 엔지니어에게 실질적 도움이 되어야 한다.정보전략계획에서 기술적 상세설계는 가장 중요한 것이 아님개념설계와 ..
1. DIP란?DIP (Dependency Inversion Principle)"상위 모듈은 하위 모듈에 의존하면 안 된다"모두가 추상화(인터페이스)에 의존해야 한다" 📌 DIP의 핵심고수준 모듈(비즈니스 로직)과 저수준 모듈(구현 세부사항)이 서로 구체적인 것에 의존하지 않고, 공통된 추상화에 의존해야 한다는 원칙이다.2. DIP가 필요한 이유❌ DIP를 지키지 않으면고수준 로직이 저수준 세부 구현에 강하게 결합구현이 바뀌면 고수준 로직도 수정해야 해서 유지보수성 급격히 저하코드 재사용과 확장이 어려움✅ DIP를 지키면고수준 모듈이 구현 변화에 영향받지 않음새로운 기능 추가/변경 시 기존 로직에 영향 최소화의존성 관리가 명확해지고 테스트가 쉬워짐❌3. DIP 위반 예시public class FileL..