전체 글(386)
-
Using @Value
@Value는 Spring에서 외부화된 속성 값을 주입하는 데 유용한 애노테이션입니다. @Value를 통해 application.properties 또는 application.yml 파일의 값을 주입하거나, 스프링 표현 언어(SpEL)를 사용해 런타임 시 계산된 값을 주입할 수 있습니다. 다음은 @Value의 다양한 활용 방법과 설정 방법에 대한 설명입니다.1. 기본 사용법: 외부 속성 값 주입@Value 애노테이션은 외부 속성을 주입하는 데 사용됩니다. 예를 들어, application.properties 파일에서 catalog.name 속성을 정의하고 이를 클래스에 주입할 수 있습니다.# application.properties 파일catalog.name=MovieCatalog @Componentpu..
2024.11.14 -
Injection with @Resource
Spring은 JSR-250의 @Resource 애노테이션(jakarta.annotation.Resource)을 필드나 빈 속성 세터 메서드에 사용하여 주입을 지원합니다. 이는 Jakarta EE에서 흔히 사용되는 패턴으로, 예를 들어 JSF 관리 빈과 JAX-WS 엔드포인트에서 사용됩니다. Spring은 Spring 관리 객체에 대해 이 패턴을 지원합니다.@Resource에는 name 속성이 있습니다. 디폴트로 Spring은 이 값을 주입할 빈 이름으로 해석합니다. 즉, 이름에 따른(by-name) 주입 방식을 따르며, 다음 예제와 같이 사용할 수 있습니다:public class SimpleMovieLister { private MovieFinder movieFinder; @Resource(name=..
2024.11.14 -
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 컨테이너가 빈을 인스턴스화하고, 구성 및 초기화 작업을 완료한 후에 사용자 정의 로직을 구현하고자 한다면, 하나 이상의 BeanPostProces..
2024.11.14