You can create a locator service, for example:
public class ServiceLocator implements ApplicationContextAware { private static ApplicationContext context; public void setApplicationContext(ApplicationContext context) { this.context = context; } public static <T> T getServiceBean(Class<T> serviceClass, String beanName) { return context.getBean(beanName, serviceClass); } }
And your service is like:
public void calculateTaxes(Client client) { if (client.isFromIndia()) { ServiceLocator.getServiceBean(TaxCalculation.class, "indiaTaxBeanName").calculate(client); } else if (client.isFromUS()) { ServiceLocator.getServiceBean(TaxCalculation.class, "usTaxBeanName").calculate(client); }
}
varun
source share