분류 전체보기(359)
-
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 -
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