public interface MyService {
void doSomething();
}
@Component("serviceOne")
public class ServiceOne implements MyService {
public void doSomething() {
System.out.println("Doing something in ServiceOne");
}
}
@Component("serviceTwo")
public class ServiceTwo implements MyService {
public void doSomething() {
System.out.println("Doing something in ServiceTwo");
}
}
@Component("serviceThree")
public class ServiceThree implements MyService {
public void doSomething() {
System.out.println("Doing something in ServiceThree");
}
}
@Component
public class ServiceUtil {
private Map<String, MyService> serviceMap;
@Autowired
public ServiceUtil(Map<String, MyService> serviceMap) {
this.serviceMap = serviceMap;
}
public void useServices() {
serviceMap.values().forEach(MyService::doSomething);
}
}