Spring Framework(138)
-
Using CustomAutowireConfigure
CustomAutowireConfigurer는 BeanFactoryPostProcessor로, Spring의 @Qualifier 애노테이션이 없어도 사용자 정의 qualifier 애노테이션 타입을 등록할 수 있도록 합니다.import org.springframework.beans.factory.annotation.CustomAutowireConfigurer;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import java.util.Collections;@Configurationpublic class AppConfig { @Bean public..
2024.11.14 -
Using Generics as Autowiring Qualifiers
@Qualifier 애노테이션 외에도, Java 제네릭 타입을 사용하여 암시적인 qualification 형태로 활용할 수 있습니다. 예를 들어, 다음과 같은 구성이 있다고 가정해 보겠습니다:@Configurationpublic class MyConfiguration { @Bean public StringStore stringStore() { return new StringStore(); } @Bean public IntegerStore integerStore() { return new IntegerStore(); }} 앞서 언급한 빈들이 제네릭 인터페이스(즉, Store 및 Store)를 구현한다고 가정하면, Store 인터페이스에 @Autowire를 사용하여 제네릭 타입이 qualifier 으로..
2024.11.14 -
Using JSR 330 Standard Annotations
Spring은 JSR-330 표준 애노테이션(의존성 주입)을 지원합니다. 이러한 애노테이션은 Spring 애노테이션과 동일한 방식으로 스캔됩니다. 이를 사용하려면 관련 JAR 파일이 클래스패스에 포함되어 있어야 합니다. Maven을 사용하는 경우, jakarta.inject 아티팩트는 표준 Maven 리포지토리(https://repo.maven.apache.org/maven2/jakarta/inject/jakarta.inject-api/2.0.0/)에서 사용할 수 있습니다. pom.xml 파일에 다음 종속성을 추가할 수 있습니다: jakarta.inject jakarta.inject-api 2.0.0 Dependency Injection with @Inject and @Named@Autowired 대신..
2024.11.14 -
Container Extension Points
일반적으로 애플리케이션 개발자는 ApplicationContext 구현 클래스를 서브클래싱할 필요가 없습니다. 대신, Spring IoC 컨테이너는 특수 통합 인터페이스의 구현체를 플러그인 방식으로 추가하여 확장할 수 있습니다. 다음 몇 개의 섹션에서는 이러한 통합 인터페이스를 설명합니다. Customizing Beans by Using a BeanPostProcessorBeanPostProcessor 인터페이스는 콜백 메서드를 정의하여 객체 생성 논리, 의존성 해결 논리 등을 커스터마이징하거나 컨테이너의 기본 동작을 대체할 수 있도록 합니다. Spring 컨테이너가 빈을 인스턴스화하고, 구성 및 초기화 작업을 완료한 후에 사용자 정의 로직을 구현하고자 한다면, 하나 이상의 BeanPostProcesso..
2024.11.14 -
Classpath Scanning and Managed Components
이 장의 대부분의 예제에서는 Spring 컨테이너 내에서 각 BeanDefinition을 생성하는 구성 메타데이터를 XML로 지정합니다. 이전 섹션(애너테이션 기반 컨테이너 구성)에서는 소스 레벨 애너테이션을 통해 많은 구성 메타데이터를 제공하는 방법을 설명했습니다. 그러나 이러한 예제에서도 디폴트 빈 정의는 XML 파일에 명시적으로 정의되며, 애너테이션은 오직 의존성 주입만을 제어합니다. 이 섹션에서는 클래스 경로를 스캔하여 후보 컴포넌트를 암시적으로 감지하는 옵션을 설명합니다. 후보 컴포넌트는 필터 기준에 맞는 클래스이며, 해당 빈 정의가 컨테이너에 등록된 클래스입니다. 이를 통해 XML을 사용하여 빈 등록을 수행할 필요가 없어지며, 대신 애너테이션(@Component 등), AspectJ 타입 표현..
2024.11.14 -
Customizing the Nature of a Bean
Customizing the Nature of a BeanLifecycle Callbacks컨테이너의 빈 생명주기 관리와 상호 작용하려면, 스프링의 InitializingBean과 DisposableBean 인터페이스를 구현할 수 있습니다. 컨테이너는 전자에 대해서는 afterPropertiesSet()을, 후자에 대해서는 destroy()를 호출하여, 빈의 초기화와 소멸 시 특정 행동을 수행할 수 있게 합니다.현재 Spring 애플리케이션에서 생명주기 콜백을 받기 위해 JSR-250의 @PostConstruct와 @PreDestroy 어노테이션을 사용하는 것이 일반적으로 최선의 방법으로 간주됩니다. 이 어노테이션들을 사용하면, 빈이 Spring 특정 인터페이스에 결합되지 않습니다. 자세한 내용은 @Po..
2024.11.14