一个接口有多个实现类,Controller方法中动态调用具体的实现类
接口
public interface IDemoService {
public String test();
}
实现类1
@Service("demoServiceImpl1")
public class DemoServiceImpl1 implements IDemoService {
@Override
public String test() {
System.out.println("实现类1");
return "实现类1";
}
}
实现类2
@Service("demoServiceImpl2")
public class DemoServiceImpl2 implements IDemoService {
@Override
public String test() {
System.out.println("实现类2");
return "实现类2";
}
}
Controller
@RequestMapping("demo")
@RestController
public class DemoController extends BaseController {
@Autowired
private Map<String, IDemoService> service;
@RequestMapping(value="/test", method = RequestMethod.POST)
@ResponseBody
public Result test(@RequestBody String json) {
//动态获取serviceImplName逻辑
String serviceImplName = "demoServiceImpl2";
//获取到具体的实现类
IDemoService iDemo = service.get(serviceImplName);
String result = iDemo.test();
System.out.println("实现类输出结果:" + result);
return null;
}
}
System.out.println输出结果
实现类输出结果:实现类2