我们正在重新构建一个大型Web应用程序。该应用程序包含大量主表(大约200-250)。我们不使用任何ORM,但我们有自己的bean / POJO框架构建在apache commons DynaBean上。
我们有一个瘦控制器 - 服务 - 存储库框架,它通常可以处理所有主CRUD操作。该框架包含一个Controller Heirarchy - BaseController,它实现了所有CRUD和路由逻辑,以及从BaseController派生的控制器,它提供了实际的存储库和视图/导航路径。
class BaseController {
public BaseController(BaseService service, ModelAndView view) {
this.mav = view;
}
// ... Other handler method implementations go here
}
现在为子类
class MyService extends BaseService {
// All crud methods delegated to / overridden from the base...
}
class MyModelNView extends ModelAndView {
// All routing information & paths specific to this entity
}
@Controller
class MyController extends GenericController {
// Option 1
public MyController() {
super(new MyService(), new MyModelNView());
}
// OR ... Option 2
// public MyController (MyService service, MyModelNView view) {
// super(service, view);
// }
}
注意:MyController将始终与MyService和MyModelNView关联,MyService和MyModelNView永远不会与不同的控制器关联。
问题:
哪个选项,1或2是实例化Service和ModelAndView对象的推荐方式 - 通过“新”或通过自动装配,为什么?
我知道自动装配将允许我在将来注入MyService的不同实现,如果需要,但我试图了解在这种特殊情况下新实例化是否有任何优势,这种可能性非常遥远。