【发布时间】:2014-05-12 13:39:41
【问题描述】:
假设我有这个代码:
@Controller
@RequestMapping("/something")
public class SomeController {
@Autowired
private SomeService aService;
@RequestMapping("/doStuff")
public void doStuff(@RequestParam("type") String type) {
aService.doStuff();
}
}
在我的应用程序中,我需要根据指定的类型调用特定的服务。所有服务都实现相同的接口。如果我理解正确 SomeService 不能是一个接口。每次完成新请求时,我都可以使用服务工厂并根据类型实例化服务,但这看起来效率不高。
或者,我可以为每种不同类型的服务使用不同的控制器(并在 REST URI 中编码类型),但这意味着很多代码重复,因为所有服务基本上都实现相同的接口。
我的问题是,假设被调用的服务依赖于传递的参数,那么这种情况下采用的最佳模式是什么?
【问题讨论】:
-
如果我理解正确
SomeService不可能是一个接口错了,它可以是一个接口,事实上它应该是,Spring会用一个类的实例注入它实现,或者只是从BeanFactory恢复所需的实例。