개념: 객체 간의 의존 관계를 코드가 아닌 외부에서 주입하는 디자인 패턴이다. 이를 통해 객체는 직접 다른 객체를 생성하거나 관리하지 않고, 외부에서 필요한 의존성을 제공받는다.장점: 코드의 재사용성과 테스트 가능성을 높이고, 코드의 결합도를 낮추어 유지보수가 쉬워진다
의존성 주입은 소프트웨어 디자인 패턴 중 하나로, 객체 간의 의존 관계를 코드 내부에서 직접 생성하지 않고 외부에서 주입하는 방식이다. 이를 통해 객체는 다른 객체와의 결합도가 낮아지며, 유지보수성과 테스트의 용이성이 향상된다.결합도 낮추기: 객체 간의 강한 결합을 줄
Spring Framework는 DI를 구현하기 위해 IoC(Inversion of Control) 컨테이너를 사용한다. IoC 컨테이너는 애플리케이션의 객체 생명주기를 관리하고, 객체 간의 의존성을 주입하는 역할을 한다. 이를 통해 개발자는 객체를 생성하거나 관리할
IoC(Inversion of Control, 제어의 역전)은 소프트웨어 설계 원칙 중 하나로, 객체의 생성 및 제어 권한을 개발자가 직접 다루는 것이 아니라 외부에서 처리하도록 하는 개념이다.이를 통해 모듈 간의 결합도를 낮추고, 코드의 재사용성과 확장성을 높이는 것
이 코드는 Spring Boot Project를 생성하면 자동으로 생성되는 Application 파일이다. Spring Framework의 시작 지점인 이 부분에서부터 Spring의 코드를 분석할 것이다. Startup startup = Startup.create(
registerSingleton 메서드 및 연관 메서드 상세 설명 Spring의 registerSingleton 메서드는 DefaultListableBeanFactory에서 싱글톤 빈을 등록할 때 호출된다. 싱글톤 빈의 수동 등록 및 타입별 캐시 초기화 작업을 수행하여
startupShutdownLock 및 startupShutdownThread락과 스레드 설정: startupShutdownLock을 걸어 싱글 쓰레드 환경을 보장하고, 현재 스레드를 startupShutdownThread에 설정하여 컨텍스트가 올바르게 초기화되도록 한