【发布时间】:2014-11-25 18:58:54
【问题描述】:
我需要与基于 Spring 3.2 的新架构兼容。要求是:一个 http 请求将到达一个带有定义需要哪种对象的属性的控制器。例如 ...mycontroller/load?objType='obj1'。
我的控制器会有这样的结构:
@Controller
public class myController{
private ObjectService objectService;
@Autowired
public setObjectService(ObjectService objectService){
this.objectService = objectService;
}
}
所以在那之后,我需要检查这个属性来决定我将使用哪个服务。例如,本例是 Obj1Service(方法:“加载”)。所有这些服务都是从 ObjectService 扩展而来的,因此:在每个传入调用中将 objectService 依赖关系交换为 Obj1Service / Obj2Service 是一个好主意吗?例如:
if(objType.equals("obj1")) this.setObjectService(context.getBean("obj1Service"..))
if(objType.equals("obj2")) this.setObjectService(context.getBean("obj2Service"..))
我知道这不是一个很好的设计,但我们需要将这个新模块与产生这种 http 请求的其他系统集成。 继承是必要的,因为我们在很多服务的代码中都有非常相似的行为,但是内部方法的修改,所以一部分行为将放在 ObjectService 中(它不是抽象的),而其他部分代码将放在里面孩子们。还有其他更合适的方法来做到这一点吗?或者您认为这是一个可以接受的解决方案?
谢谢!
【问题讨论】:
-
你应该有一个类型到服务的映射。
标签: java spring spring-mvc dependency-injection