본문 바로가기

전체 글

(214)
10. 클래스패스 스캐닝과 관리받는 컴포넌트들 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-classpath-scanning 이 장에서 대부분의 예시들은 설정 메타데이터를 설정하는 것에 XML을 사용하였다. 이전 장에서는(어노테이션 기반의 컨테이너 설정) source-level 어노테이션들을 통해 어떻게 많은 설정 메타데이터들을 제공할 수 있는지 설명했다. 하지만 그 예시들에서도 "기본"이되는 bean 정의들은 XML 파일에 명확히 설정되어있었다. 어노테이션들은 단지 의존성 주입을 해냈던 것이다. 이 장에서는 클래스패스를 스캐닝함으로써 후보가 되는 컴포넌트들을 찾아내는 방법들에 대해 설명한다. 후보 컴포넌트들은 필터 ..
9.9. @PostConstruct와 @PreDestory 사용하기 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-postconstruct-and-predestroy-annotations CommonAnnotationBeanPostProcessor는 @Resource 어노테이션을 인지할 뿐만 아니라 JSR-250의 라이프사이클 어노테이션들인 javax.annotation.PostConstruct와 javax.annotation.PreDestroy도 인지한다. 스프링 2.5에서 소개된 것처럼, 이 어노테이션들에 대한 지원은 '초기화 콜백'과 '소멸 콜백'에서 설명했던 라이프사이클 콜백 메커니즘의 대체자를 제공한다. 스프링 Application..
9.8. @Value 사용하기 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-value-annotations @Value는 전형적으로 외부의 프로퍼티들을 주입할 때 사용된다. @Component public class MovieRecommender { private final String catalog; public MovieRecommender(@Value("${catalog.name}") String catalog) { this.catalog = catalog; } } 다음 설정과 함께 사용된다. @Configuration @PropertySource("classpath:application.prop..
9.7. @Resource로 주입하기 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-resource-annotation 스프링은 JSR-250의 @Resource 어노테이션(javax.annotation.Resource)을 통해서도 필드들이나 bean 프로퍼티 setter 메소드들에 주입하는 것을 지원한다. 이는 JSF-managed bean들이나 JAX-WS endpoint들과 같은, 자바 EE에서는 보편적인 패턴이다. 스프링은 스프링의 관리 대상 객체들에게도 이러한 패턴을 지원해준다. @Resource는 이름 속성을 취한다. 기본적으로, 스프링은 그 값을 주입될 bean의 이름으로 해석한다. 다시말해, 다음..
9.6. CustomAutowireConfigurer 사용하기 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-custom-autowire-configurer CustomAutowireConfigurer는 BeanFactoryPostProcessor이다. CustomAutowireConfigurer는 스프링의 @Qualifier 어노테이션이 붙지 않았더라도 여러분의 커스텀한 수식자 어노테이션 타입들을 등록할 수 있게 해준다. 다음 예시는 CustomAutowireConfigurer의 사용법을 보여준다. example.CustomQualifier AutowireCandidateResolver는 autowire 후보들을 다음과 같이 결정한다..
9.5. Autowiring 수식자들로써 지네릭 사용하기 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-generics-as-qualifiers @Qualifier 어노테이션과 더불어, 자격을 암시하는 형식인 자바 지네릭 타입들을 사용할 수 있다. 그 예시로, 다음과 같은 설정이 있다고 가정해보자. @Configuration public class MyConfiguration { @Bean public StringStore stringStore() { return new StringStore(); } @Bean public IntegerStore integerStore() { return new IntegerStore(); } }..
9.4. Qualifier들을 활용한 어노테이션 기반의 정교한 Autowiring 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-autowired-annotation-qualifiers @Primary는 몇몇 인스턴스들에서 하나의 최우선자가 선택될 수 있도록 하는, 효과적인 타입 autowiring 방법이다. 만약 선택 과정에 좀 더 제어가 필요하다면 스프링의 @Qualifier 어노테이션을 사용할 수 있다. 수식하는 값들을 특정 인자들에 부여하면, 매치되는 타입의 집합이 줄어들어 특정 bean이 각 인자들을 위해 선택된다. 가장 단순한 예시에서는 이것이 평범한 서술적 값을 갖는다. 다음 예시를 보자. public class MovieRecommender..
9.3. @Primary를 활용한 어노테이션 기반의 정교한 Autowiring 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-autowired-annotation-primary 타입으로 autowiring할 때는 여러 후보가 있을 수 있기 때문에, 선택 과정을 좀 더 제어할 필요가 있을 수 있다. 이를 해결하는 방법 중 하나는 스프링의 @Primary 어노테이션이다. @Primary는 단일값인 의존성에 autowired되기 위한 여러 후보들 가운데 특정 bean이 선택을 받을 수 있도록 해준다. 만약 여러 후보 중 정확히 하나의 후보만이 존재한다면 그것이 autowired 값이 된다. 다음 설정에서 MovieCatalog의 최우선자로 정의된 first..