public class Client {
public static void main(String[] args) {
BeanFactory beanFactory = new AnnotationConfigApplicationContext(ObjectFactory.class);
PaymentService paymentService = beanFactory.getBean(PaymentService.class);
Payment payment = paymentService.prepare(...);
...
}
}
@Configuration
@ComponentScan
public class ObjectFactory {
}
@Component
public class PaymentService {
private final ExRateProvider exRateProvider;
public PaymentService(ExRateProvider exRateProvider) {
this.exRateProvider = exRateProvider;
}
...
}
@Component
public class SimpleRateProvider implements ExRateProvider {
...
}