https://sundaland.tistory.com/481 ▶ 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 ..
스프링 프레임워크/IoC (Inversion of Control)
https://sundaland.tistory.com/480 ▶ Using the @Configuration annotation @Configuration은 객체가 빈 정의의 소스임을 나타내는 클래스 레벨 어노테이션이다. @Configuration 클래스는 @Bean 어노테이션이 달린 메서드를 통해 빈을 선언한다. @Configuration 클래스에서 @Bean 메서드에 대한 호출은 빈 간 종속성을 정의하는 데에도 사용할 수 있다. ▷ Injecting Inter-bean Dependencies 빈이 서로 종속성을 가질 때, 그 종속성을 표현하는 것은 다음 예제에서 보듯이 한 빈 메서드가 다른 빈 메서드를 호출하는 것만큼 간단하다. @Configurationpublic class AppConfig { ..
https://sundaland.tistory.com/479 ▶ Using the @Bean Annotation@Bean은 메서드 레벨 어노테이션이며 XML 엘리먼트와 직접적으로 대응된다. 이 어노테이션은 에서 제공하는 다음과 같은 일부 속성을 지원한다.init-methoddestroy-methodautowiringname @Bean 애노테이션은 @Configuration 어노테이션이 붙은 클래스나 @Component 어노테이션이 붙은 클래스에서 사용할 수 있다. ▷ Declaring a Bean 빈을 선언하려면 @Bean 어노테이션으로 메서드에 어노테이션을 달 수 있다. 이 메서드를 사용하여 메서드의 리턴 값으로 지정된 타입의 ApplicationContext 내에 빈 정의를 등록한다. 기본적으로..
https://sundaland.tistory.com/478 ▶ Instantiating the Spring Container by Using AnnotationConfigApplicationContext Spring 3.0에 도입된 Spring의 AnnotationConfigApplicationContext를 설명한다. 이 다재다능한 ApplicationContext 구현은 @Configuration 클래스뿐만 아니라 일반 @Component 클래스와 JSR-330 메타데이터로 어노테이션이 달린 클래스도 입력으로 허용할 수 있다.@Configuration 클래스가 입력으로 제공되면 @Configuration 클래스 자체가 빈 정의로 등록되고 클래스 내에서 선언된 모든 @Bean 메서드도 빈 정의로 등록..
https://sundaland.tistory.com/475 ▶ Fine-tuning Annotation-based Autowiring with Qualifiers@Primary는 여러 인스턴스가 있을 때 특정 후보를 자동 주입하는데 유용하다. 하지만 선택 과정을 더 세밀하게 제어해야 할 때는 스프링은 @Qualifier 어노테이션을 사용할 수 있다. @Qualifier를 사용하면 특정 아규먼트에 qualifier을 연결하여 타입 일치의 범위를 좁히고, 특정 빈이 각 아규먼트에 선택되도록 할 수 있다. 가장 단순한 경우는 아래 예시에ㅘ 같은 간단한 설명적 값일 수 있다.public class MovieRecommender { @Autowired @Qualifier("main") priva..
https://sundaland.tistory.com/474 스프링은 어노테이션 기반 구성에 대한 포괄적인 지원을 제공하며, 어노테이션을 클래스, 메서드 또는 필드 선언에 사용하여 컴포넌트 클래스 자체의 메타데이터로 작동한다. 예를 들어, 스프링은 BeanPostProcessor를 어노테이션과 함께 사용하여 핵심 IoC 컨테이너가 특정 어노테이션을 인식할 수 있도록 한다. 예를 들어, @Autowired 어노테이션은 Autowiring Collaboratros에서 설명된 것과 동일한 기능을 제공하지만, 더 세밀한 제어와 더 넓은 적용 범위를 가진다. 또한 스프링은 @PostConstruct와 @PreDestory와 같은 JSR-250 어노테이션에 대한 지원뿐만이 아니라, jakarta.inject 패키지..
https://sundaland.tistory.com/472 ▶ Bean Scopes빈 정의를 생성할 때, 해당 빈 정의에 의해 정의된 클래스의 실제 인스턴스를 생성하기 위한 레시피를 만든다. 빈 정의가 레시피라고 하는 이유는, 클래스와 마찬가지로 하나의 레시피에서 많은 객체 인스터스를 생성할 수 있다는 것을 의미하기 때문이다. 특정 빈 정의에서 생성된 객체에 주입될 다양한 의존성과 구성 값 뿐만이 아니라, 특정 빈 정의에서 생성된 객체의 범위를 제어할 수도 있다. 이 접근 방식은 강력하고 유연한데, 이는 자바 클래스 수준에서 객체의 범위를 구체화하는 대신 구성을 통해 생성하는 객체의 범위를 선택할 수 있기 때문이다. 빈은 여러 범위 중 하나로 정의될 수 있다. 스프링 프레임워크는 여섯 가지 범위를 지원..