我有多个服务,我想使用它们的类名动态地 Autowiring 这些服务。我有一个名为“runCustomService”的方法,该方法将服务的类名作为输入参数(如“Service1”或“Service2”)。我想 Autowiring 这些服务并调用它的 run 方法。有没有办法做到这一点?
@Service
public class Service1 extends BaseService{
@Autowired
private AnotherService anotherService;
public void run(){ .... }
}
@Service
public class Service2 extends BaseService{
@Autowired
private AnotherService anotherService;
public void run(){ .... }
}
public void runCustomService(String serviceClassName){
BaseService baseService = //Create baseService object from serviceClassName
baseService.run();
}
最佳答案
您可以在两个服务上使用限定符,并根据来自 ApplicationContext 的限定符名称获取正确的 bean。
@Service
@Qualifier("Service1")
public class Service1 extends BaseService{
@Service
@Qualifier("Service2")
public class Service2 extends BaseService{
@Autowired
ApplicationContext applicationContext;
public void runCustomService(String serviceClassName){
BaseService baseService = applicationContext.getBean(serviceClassName);
baseService.run();
}
关于java - 如何使用类名 Autowiring Spring 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46524998/