스프링 컨테이너: 싱글톤 컨테이너 Spring Framework에서 빈(Bean)의 기본 스코프로 싱글톤(Singleton) 패턴을 따릅니다. 이는 기본적으로 스프링 컨테이너가 빈을 싱글톤으로 관리하기 때문입니다. 싱글톤 패턴은 어플리케이션 전체에서 단일 인스턴스를 공유하여 메모리 사용량을 줄이고 객체 생성 비용을 절감하는 디자인 패턴입니다. 즉, 스프링 컨테이너가 해당 빈을 생성하고 초기화한 후, 동일한 빈을 요청할 때마다 동일한 인스턴스가 반환됩니다. 이로 인해 다음과 같은 이점이 있습니다. 일관성 여러 곳에서 동시에 빈을 참조하더라도 상태 공유나 동기화 문제 없이 안전하게 사용할 수 있습니다. 여러 개의 인스턴스를 사용할 때 발생할 수 있는 데이터의 불일치 문제를 방지할 수 있습니다. 자원 절약 동..
@Autowired @Autowired란 스프링 컨테이너에 등록한 빈에게 의존 관계를 자동으로 주입하기 위해 사용되는 어노테이션입니다. 스프링 컨테이너에 빈들을 모두 등록한 후에, 스프링 컨테이너는 @Autowired 어노테이션이 붙은 생성자, 필드 등을 스캔하고, 해당하는 빈을 찾아 의존성을 자동으로 주입합니다. 생성자 주입 ⭐권장⭐ @Component public class ControllerClass { private final ServiceClass serviceClass; @Autowired public ControllerClass(ServiceClass serviceClass) { this.serviceClass = serviceClass; } } 객체 생성 시점에서 생성자를 통해 의존 관계를..
https://yeo-computerclass.tistory.com/268 Spring 스프링 컨테이너: IoC 컨테이너 스프링 컨테이너( IoC 컨테이너 ) 스프링 컨테이너는, 어플리케이션에서 사용되는 객체들을 생성하고 관리합니다. 객체들은 스프링 컨테이너에 의해 생성되고, 컨테이너가 객체의 생명주기를 관 yeo-computerclass.tistory.com 위 내용에서 컨테이너는 BeanDefinition을 기반으로 빈을 생성하고 구성한다 하였습니다. 즉 빈을 등록하기 위해서는 BeanDefinition이라는 메타데이터를 구성해주면 됩니다. BeanDefinition이란 객체 메타데이터를 직접 생성할 수도 있지만, Spring은 XML문서, Annotation, 프로퍼티 파일과 같은 외부 리소스로 빈..
IoC 컨테이너 계층 구조 스프링 어플리케이션은 최소한 하나 이상의 IoC 컨테이너는 가져야만 합니다. 모든 스프링 컨테이너는 계층 구조를 가질 수 있습니다. 즉 부모 컨테이너는 하나 이상의 자식 컨테이너를 가질 수 있습니다. 계층 구조 안에 있는 모든 컨텍스트는 각자 독립적인 설정 정보를 이용해 빈 오브젝트를 만들고 관리합니다. DI를 위해 빈을 찾을 때는 부모 어플리케이션 컨텍스트의 빈까지 모두 검색합니다. 부모 컨테이너에 등록된 빈은 자식 컨테이너에서도 사용할 수 있지만, 자식 컨테이너에 등록된 빈은 부모 컨테이너에서 사용할 수 없기 때문입니다. 먼저 자신이 관리하는 빈을 찾아보고 없다면 부모 컨텍스트에게 빈을 찾아달라고 요청하여 찾는다. 만약 부모 컨텍스트에 없으면 그 부모의 부모 컨텍스트에게 까..
스프링 컨테이너( IoC 컨테이너 ) 스프링 컨테이너는, 어플리케이션에서 사용되는 객체들을 생성하고 관리합니다. 스프링 컨테이너는 Bean 객체의 생성및 생명주기를 관리해주고, Bean 들을 조립하여 서로를 편리하게 상호 의존(사용)하게 해줍니다. 💁 Bean이란? 스프링 IoC컨테이너에 의해 생성되고 관리되는 객체를 Bean이라고 합니다. 이 객체는 스프링 컨테이너에 의해 관리되기 때문에 자바에서처럼 new Object();로 생성되지 않습니다. 작성한 클래스를 스프링 컨테이너에 빈(Bean)으 등록 해주면, 스프링 컨테이너가 해당 클래스를 이용해 객체를 생성하고 관리해줍니다. 스프링 컨테이너는 IoC 컨테이너라고 불립니다. 컨테이너가 객체에 대한 제어권을 갖고 있다고 해서 IoC(제어의 역전)라고 합..
IoC / DI: 제어의 역전 / 의존관계 주입 스프링에서 IoC(Inversion of Control)/DI(Dependency Injection)는 객체지향 개발 방식에서 객체 간의 결합도를 낮추고 유연한 코드를 작성하기 위한 핵심적인 기술 중 하나입니다. 일반적으로 객체를 생성하고 사용하는 방식은 개발자가 코드 안에서 직접 객체를 생성하고 의존성을 설정합니다. 하지만 스프링에서는 이러한 제어권을 개발자가 아닌 스프링 컨테이너가 가져오는데, 이를 IoC(Inversion of Control, 제어의 역전)이라고 합니다. 즉, 개발자가 객체를 생성하고 의존성을 설정하는 것이 아니라, 스프링 컨테이너가 객체를 생성하고 의존성을 설정합니다. DI(Dependency Injection)는 스프링에서 IoC를..