스프링 컨테이너와 의존관계 주입

2024. 7. 3. 11:19토비의 스프링 6

지금까지 만든 코드는 아래와 같은 구조로 되어있다.

 

여기에 스프링을 적용하면

 

Bean = 오브젝트중에서 애플리케이션을 구성하고 있는 애플리케이션의 기능을 담당하고 제공하는 핵심 클래스의 오브젝트

 

 

스프링의 BeanFactory가 앞에서 만든 ObjectFactory가 제공하던 기능을 대체한다. BeanFactory는 ObjectFactory의 구성 정보를 참고해서 동작하게 만든다.

 

 

ObjectFactory

package tobyspring.hellospring;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ObjectFactory {
    @Bean
    public PaymentService paymentService() {
        return new PaymentService(exRateProvider());
    }

    @Bean
    public ExRateProvider exRateProvider(){
        return new SimpleExRateProvider();
    }
}

 

Client

package tobyspring.hellospring;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import java.io.IOException;
import java.math.BigDecimal;

public class Client {
    public static void main(String[] args) throws IOException {
        BeanFactory beanFactory = new AnnotationConfigApplicationContext(ObjectFactory.class);
        PaymentService paymentService = beanFactory.getBean(PaymentService.class);
        Payment payment = paymentService.prepare(100L,"USD", BigDecimal.valueOf(50.7));
        System.out.println(payment);
    }
}

 

'토비의 스프링 6' 카테고리의 다른 글

싱글톤 레지스트리  (0) 2024.07.03
구성정보를 가져오는 다른 방법  (0) 2024.07.03
원칙과 패턴  (0) 2024.07.03
오브젝트 팩토리  (0) 2024.07.03
관계설정 책임의 분리  (0) 2024.07.03