DI& Spring中的自动装配与实例化

时间:2017-07-08 09:04:42

标签: java spring dependency-injection

我们正在重新构建一个大型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的不同实现,如果需要,但我试图了解在这种特殊情况下新实例化是否有任何优势,这种可能性非常遥远。

0 个答案:

没有答案