首页 > 解决方案 > 根据条件进行依赖注入

问题描述

我的控制器:

@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。

这可能吗?

标签: javaspring-bootdependency-injection

解决方案


听起来您需要这两个都可用,并且控制器上的每个方法调用都可以选择不同的方法。所以连接这两种实现,用一个限定符来区分它们。在控制器方法中使用路径变量,让它以编程方式决定调用哪个服务。


推荐阅读