본문 바로가기

분류 전체보기163

Lazy-initialized Beans 기본적으로 ApplicationContext는 초기화 단계에 모든 싱글턴 빈을 생성하고 설정합니다. 싱글턴 빈은 단 하나만 만들어져 공유되는 빈 만약 prototype이라면 매 요청시마다 새로 만들어야 하기 때문에 초기화 단계에 미리 만들 필요가 없기 때문이라 생각함 대다수의 경우 설정이나 환경오류를 즉각 발견할 수 있기 때문에 이런 pre-instantiation이 유용합니다. 하지만 싱글턴 빈의 pre-instantiation을 원하지 않는 경우 lazy-initialized 되도록 빈 설정을 할 수 있습니다. lazy-initialized빈은 IoC 컨테이너에게 자신이 처음 요청된 시점에 빈을 생성하라고 알려줍니다. 만약 초기화 단계에 인스턴스화 되는 싱글턴 빈이 lazy-initialized 설정.. 2024. 1. 24.
Dependency Injection - 스프링 공식문서가 말하는 의존성 주입 의존성 주입(Dependency Injection, DI)은 펙토리 메서드를 통해 객체가 생성되거나 반환된 후 객체 인스턴스에 설정된 속성으로, 또는 생성자 인수나 펙토리 메서드에 대한 인수를 통해서만 객체가 가진 의존성을 정의하는 프로세스이다. 컨테이너는 정의된 의존성을 바탕으로 빈이 생성될 때 필요한 의존성을 주입해준다. 의존성 주입은 빈이 자신에게 필요한 의존성을 직접 제어하는 방식을 "역전" 시킨 것으로, 이를 IoC(Inversion of Control, 제어의 역전)이라 한다. 의존성 주입을 사용하면 더 깔끔한 코드를 짤 수 있고, 객체한 결합을 분리하기가 더 용이해진다. 객체는 자신에게 필요한 의존성(다른 객체들)이 어디에 있는지 알 필요도 없고, 직접 찾을 필요도 없어진다. 그 결과로 테스.. 2024. 1. 23.
Bean Overview - 스프링 공식문서가 말하는 빈 스프링 IoC 컨테이너는 하나 이상의 빈을 관리합니다. 빈은 컨테이너에 전달된 Configuration Metadata를 기반으로 생성됩니다. 컨테이너 내부에서 Bean의 정의는 BeanDefinition 객체를 통해 표시되고 다음과 같은 metadata를 가지고 있습니다. 클래스 이름(A Package-qualified class name) : 빈으로 정의하고자 하는 클래스 Bean 동작 구성 요소. : 컨테이너에서 빈이 어떻게 동작할것인지를 나타낸다. ( Bean Scope, LifeCycle callback등) 빈이 작업을 수행하기 위해 필요한 다른 빈들로의 참조. 이러한 참조를 의존성(Dependencies)라 한다. 새로 생성된 객체에 설정한 기타 구성 정보. Connection Pool을 관리.. 2024. 1. 22.
Container Overview - 스프링 공식문서가 말하는 컨테이너 org.springframework.context.ApplicationContext 인터페이스는 스프링 IoC 컨테이너를 대표하며 빈의 인스턴스화, 설정 그리고 조합을 담당합니다. 컨테이너는 Configuration metadata를 통해 어떤 오브젝트를 인스턴스화 하고, 설정하고, 조합할지의 정보를 받아옵니다. Configuration Metadata는 XML, 자바 애노테이션 혹은 자바 코드를 통해 설정할 수 있습니다. ApplicationContext 인터페이스의 구현체중 몇개는 스프링에서 기본적으로 제공이 됩니다. 독립형 애플리케이션에서는 ClassPathXmlApplication Context나 FileSystemXmlApplicationContext를 많이 사용합니다. XML을 기반으로 Con.. 2024. 1. 22.
728x90