- 定义抽象类
public interface PullDataService{
void pullData();
}
- 定义各自得类型并实现该接口
@Service("note")
public class NoteService implements PullDataService{
@Override
public void pullData(){
System.out.println("node");
}
}
@Service("order")
public class OrderService implements PullDataService{
@Override
public void pullData(){
System.out.println("order");
}
}
- 项目启动生成工厂
import lombok.RequiredArgsConstructor;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
@Component
@RequiredArgsConstructor
public class ServiceFactory implements ApplicationRunner{
public static final Map<String,PullDataService> SERVICE_MAP =new HashMap<>();
private final ApplicationContext applicationContext;
@Override
public void run(ApplicationArguments args){
Map<String, PullDataService> beansOfType = applicationContext.getBeansOfType(JkyService.class);
beansOfType.forEach(SERVICE_MAP::put);
}
public PullDataService getService(String serviceName){
return SERVICE_MAP.get(serviceName);
}
}
- 使用
private final ServiceFactory serviceFactory;
@GetMapping("/x")
@ApiOperation(value = "x")
public void x(@RequestParam("service")String service){
serviceFactory.getService(service).pullData();
}