gpt4 book ai didi

java - 如何使用类名 Autowiring Spring 服务?

转载 作者:行者123 更新时间:2023-12-01 14:06:34 27 4
gpt4 key购买 nike

我有多个服务,我想使用它们的类名动态地 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com