Spring MVC,从控制器内部调用另一个控制器
问题内容:
我正在使用一个控制器调用第二个控制器上的方法的现有代码。到目前为止,有2种实现。
第一次实施
return new Controller().method(request, response);
第二实施
@Autowired
private Controller controller.
return this.controller.method(request, response);
哪一种是正确的实现方式,如果其中任何一个存在问题,那将会是什么问题。
问题答案:
您需要从另一个控制器调用方法的事实表明,可能存在设计缺陷。
使用选项1,您将失去Spring
DI容器给您带来的一切:即,其他控制器可能会被Spring实例化,并带有一些其他依赖关系。如果您自己实例化它,即使它现在可以正常工作,因为您可能没有@Autowired
/ @Value依赖关系,那么一旦您添加对其他资源的依赖关系,它就会中断。此外,您已经有一个实例为您构建了容器,为什么还要创建其他实例呢?