Spring Framework(164)
-
Classpath Scanning and Managed Components
이 장의 대부분의 예제에서는 Spring 컨테이너 내에서 각 BeanDefinition을 생성하는 Configuration Metadata를 XML로 지정합니다. 이전 섹션(Annotation 기반 컨테이너 구성)에서는 소스 레벨 애너테이션을 통해 많은 구성 메타데이터를 제공하는 방법을 설명했습니다. 그러나 이러한 예제에서도 디폴트 빈 정의는 XML 파일에 명시적으로 정의되며, 애너테이션은 오직 의존성 주입만을 제어합니다. 이 섹션에서는 클래스 경로를 스캔하여 후보 컴포넌트를 암시적으로 감지하는 옵션을 설명합니다. 후보 컴포넌트는 필터 기준에 맞는 클래스이며, 해당 빈 정의가 컨테이너에 등록된 클래스입니다. 이를 통해 XML을 사용하여 빈 등록을 수행할 필요가 없어지며, 대신 애너테이션(@Componen..
2024.11.14 -
Customizing the Nature of a Bean
Lifecycle Callbacks컨테이너의 빈 생명주기 관리와 상호 작용하려면, 스프링의 InitializingBean과 DisposableBean 인터페이스를 구현할 수 있습니다. 컨테이너는 전자에 대해서는 afterPropertiesSet()을, 후자에 대해서는 destroy()를 호출하여, 빈의 초기화와 소멸 시 특정 행동을 수행할 수 있게 합니다.현재 Spring 애플리케이션에서 생명주기 콜백을 받기 위해 JSR-250의 @PostConstruct와 @PreDestroy 어노테이션을 사용하는 것이 일반적으로 최선의 방법으로 간주됩니다. 이 어노테이션들을 사용하면, 빈이 Spring 특정 인터페이스에 결합되지 않습니다. 자세한 내용은 @PostConstruct와 @PreDestroy 사용하기를 참..
2024.11.14 -
Composing Java-based Configurations
Spring의 Java 기반 구성 기능을 사용하면 어노테이션을 작성할 수 있어 구성의 복잡성을 줄일 수 있습니다. Using the @Import Annotation 엘리먼트가 Spring XML 파일 내에서 구성의 모듈화를 돕기 위해 사용되는 것처럼, @Import 어노테이션을 사용하면 다음 예제와 같이 다른 구성 클래스에서 @Bean 정의를 로드할 수 있습니다.@Configurationpublic class ConfigA { @Bean public A a() { return new A(); }}@Configuration@Import(ConfigA.class)public class ConfigB { @Bean public B b() { return new B(); }}이제 컨텍스트를 인스턴스화할 때..
2024.11.14 -
Using the @Configuration annotation
@Configuration은 객체가 Bean Definition의 소스임을 나타내는 클래스 레벨 어노테이션입니다. @Configuration 클래스는 @Bean 어노테이션이 적용된 메서드를 통해 빈을 선언합니다. @Configuration 클래스에서 @Bean 메서드에 대한 호출은 Beans 간 종속성을 정의하는 데에도 사용할 수 있습니다. 일반적인 소개는 기본 개념: @Bean 및 @Configuration을 참조하세요. Injecting Inter-bean Dependencies빈이 서로 종속성을 가질 때, 그 종속성을 표현하는 것은 다음 예제에서 보듯이 한 빈 메서드가 다른 빈 메서드를 호출하는 것만큼 간단합니다.@Configurationpublic class AppConfig { @Bean pub..
2024.11.14 -
Using the @Bean Annotation
Using the @Bean Annotation@Bean은 메서드 레벨 어노테이션이며 XML 엘리먼트와 직접적으로 대응됩니다. 이 어노테이션은 에서 제공하는 다음과 같은 일부 속성을 지원합니다.init-methoddestroy-methodautowiringname@Bean 애노테이션은 @Configuration 어노테이션이 붙은 클래스나 @Component 어노테이션이 붙은 클래스에서 사용할 수 있습니다. Declaring a Bean빈을 선언하려면 @Bean 어노테이션으로 메서드에 어노테이션을 달 수 있습니다. 이 메서드를 사용하여 메서드의 리턴 값으로 지정된 타입의 ApplicationContext 내에 빈 정의를 등록합니다. 기본적으로 빈 이름은 메서드 이름과 동일합니다. 다음 예제는 @Bean ..
2024.11.14 -
Instantiating the Spring Container by Using AnnotationConfigApplicationContext
다음 섹션에서는 Spring 3.0에 도입된 Spring의 AnnotationConfigApplicationContext를 설명합니다. 이 다재다능한 ApplicationContext 구현은 @Configuration 클래스뿐만 아니라 일반 @Component 클래스와 JSR-330 메타데이터로 어노테이션이 달린 클래스도 입력으로 허용할 수 있습니다.@Configuration 클래스가 입력으로 제공되면 @Configuration 클래스 자체가 빈 정의로 등록되고 클래스 내에서 선언된 모든 @Bean 메서드도 빈 정의로 등록됩니다.@Component 및 JSR-330 클래스가 제공되면 빈 정의로 등록되고 필요한 경우 @Autowired 또는 @Inject와 같은 DI 메타데이터가 해당 클래스 내에서 사용된..
2024.11.14