java - 根据条件进行依赖注入
问题描述
我的控制器:
@RestController
@RequestMapping("/mypath")
public class MyController {
@Autowired
MyServiceInterface service;
@PostMapping("/{source}")
void myControllerFunc(@PathVariable String source, @RequestBody MyObject obj) {
...
Object myServiceObj = service.myServiceFunc(param);
...
}
}
我的服务接口:
public interface MyServiceInterface {
Object myServiceFunc(String param);
}
我的服务实现:
@Service
public class MyServiceOne {
Object myServiceFunc(String param) {
...
}
}
@Service
public class MyServiceTwo {
void myServiceFunc(String param) {
...
}
}
我的弹簧启动版本:1.5.7
我想根据我的路径变量 ("source") 注入服务。如果 source = 1,则注入 MyServiceOne;如果 source = 2,则注入 MyServiceTwo。
这可能吗?
解决方案
听起来您需要这两个都可用,并且控制器上的每个方法调用都可以选择不同的方法。所以连接这两种实现,用一个限定符来区分它们。在控制器方法中使用路径变量,让它以编程方式决定调用哪个服务。
推荐阅读
- multithreading - 有没有一种标准的方法来编写这个紧密耦合的 for 循环,这样它就不会烧掉我 100% 的 CPU
- reactjs - 使用 reactjs 禁用带有复选框的输入表单
- flutter - Flutter - 即使单击后退按钮,如何确保开关处于打开状态?
- json - 如何为 discord bot 发送数据和字符串?
- jpa - 如何通过JPA返回表中不存在的计数列
- c# - 如何执行此浮动操作按钮,即使在 Xamarin 表单的后台模式下也可以运行
- c# - C# 将 JToken 列表组合到 JObject
- android - chaquo pyException ModuleNotFoundError:没有名为“四元数”的模块
- android - 应用程序未打开或关闭时的后台服务
- wordpress - 为什么使用类和公共方法的操作不会触发 __construct()