Spring Framework(138)
-
Fine-tuning Annotation-based Autowiring with Qualifiers
@Primary는 여러 인스턴스가 있을 때 특정 후보를 자동 주입하는 데 유용합니다. 하지만 선택 과정을 더 세밀하게 제어해야 할 때는 Spring의 @Qualifier 어노테이션을 사용할 수 있습니다. @Qualifier를 사용하면 특정 아규먼트에 qualifier을 연결하여 타입 일치의 범위를 좁히고, 특정 빈이 각 아규먼트에 선택되도록 할 수 있습니다. 가장 단순한 경우, 다음 예제와 같이 간단한 설명적 값일 수 있습니다:Javapublic class MovieRecommender { @Autowired @Qualifier("main") private MovieCatalog movieCatalog; // ...}또한 개별 생성자 아규먼트나 메서드 파라미터에 @Qualifier ..
2024.11.14 -
Annotation-based Container Configuration
Spring은 어노테이션 기반 구성에 대한 포괄적인 지원을 제공하며, 어노테이션을 클래스, 메서드 또는 필드 선언에 사용하여 컴포넌트 클래스 자체의 메타데이터로 작동합니다. 예를 들어, AutowiredAnnotationBeanPostProcessor 예제에서 언급한 것처럼, Spring은 BeanPostProcessor를 어노테이션과 함께 사용하여 핵심 IOC 컨테이너가 특정 어노테이션을 인식할 수 있도록 합니다. 예를 들어, @Autowired 어노테이션은 Autowiring Collaborators에서 설명된 것과 동일한 기능을 제공하지만, 더 세밀한 제어와 더 넓은 적용 범위를 가집니다. 또한, Spring은 @PostConstruct와 @PreDestroy와 같은 JSR-250 어노테이션에 대한..
2024.11.14 -
Bean Scopes
Bean Scopes빈 정의를 생성할 때, 해당 빈 정의에 의해 정의된 클래스의 실제 인스턴스를 생성하기 위한 레시피를 만듭니다. 빈 정의가 레시피라는 생각은 중요한데, 이는 클래스와 마찬가지로 하나의 레시피에서 많은 객체 인스턴스를 생성할 수 있다는 것을 의미합니다.특정 빈 정의에서 생성된 객체에 주입될 다양한 의존성과 구성 값뿐만 아니라, 특정 빈 정의에서 생성된 객체의 범위를 제어할 수도 있습니다. 이 접근 방식은 강력하고 유연한데, 이는 자바 클래스 수준에서 객체의 범위를 구체화하는 대신 구성을 통해 생성하는 객체의 범위를 선택할 수 있기 때문입니다. 빈은 여러 범위 중 하나로 정의될 수 있습니다. Spring 프레임워크는 여섯 가지 범위를 지원하며, 이 중 네 가지는 web-aware Appli..
2024.11.14 -
Method Injection
Method Injection대부분의 애플리케이션 시나리오에서, 컨테이너 내의 대부분의 빈들은 싱글톤입니다. 싱글톤 빈이 다른 싱글톤 빈과 협력해야 하거나 비싱글톤 빈이 다른 비싱글톤 빈과 협력해야 할 때, 일반적으로 다른 하나의 빈을 속성으로 정의함으로써 의존성을 처리합니다. 문제는 빈 생명주기가 다를 때 발생합니다. 싱글톤 빈 A가 비싱글톤(프로토타입) 빈 B를 사용해야 한다고 가정해 보겠습니다. 컨테이너는 싱글톤 빈 A를 단 한 번만 생성하므로 속성을 설정할 기회도 한 번뿐입니다. 컨테이너는 필요할 때마다 빈 A에 새로운 빈 B 인스턴스를 제공할 수 없습니다.해결책은 일부 제어의 역전을 포기하는 것입니다. ApplicationContextAware 인터페이스를 구현하여 빈 A가 컨테이너를 인식하게 ..
2024.11.14 -
Using depends-on, Lazy-initialized Beans, Autowiring Collaborators
Using depends-onSpring의 Java 기반 구성에서는 @DependsOn 어노테이션을 사용하여 빈 간의 초기화 순서를 지정할 수 있습니다.import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.DependsOn;@Configurationpublic class AppConfig { @Bean @DependsOn("manager") public ExampleBean beanOne() { ExampleBean exampleBean = new Ex..
2024.11.14 -
Dependencies
일반적인 엔터프라이즈 애플리케이션은 단일 객체(또는 스프링 용어로는 빈)로 구성되지 않습니다. 가장 단순한 애플리케이션조차도 몇 가지 객체가 함께 작동하여 최종 사용자가 일관된 애플리케이션으로 인식할 수 있도록 합니다. 다음 섹션에서는 독립적으로 정의된 여러 빈 정의에서 출발하여 객체들이 목표를 달성하기 위해 협력하는 완성된 애플리케이션으로 전환하는 방법을 설명합니다. Section SummaryDependency InjectionDependencies and Configuration in DetailUsing depends-on, Lazy-initialized Beans, Autowiring CollaboratorsMethod Injection
2024.11.14