3co*_*ins 13 java spring spring-mvc
我正在使用一个控制器来调用第二个控制器上的方法的现有代码.到目前为止我已经看到了2个实现.
第一次实施
return new Controller().method(request, response);
Run Code Online (Sandbox Code Playgroud)
第二次实施
@Autowired
private Controller controller.
return this.controller.method(request, response);
Run Code Online (Sandbox Code Playgroud)
哪个是正确的实现,如果有任何问题,有什么问题.
Cos*_*atu 15
您需要从另一个控制器调用方法这一事实揭示了可能的设计缺陷.
使用选项1,您将丢失Spring DI容器带给您的所有内容:即,其他控制器可能由Spring实例化,其中一些其他依赖项连接到它.如果您自己实例化它,即使它在此时确实有效,因为您可能没有@Autowired/@Value依赖项,一旦您在其他资源上添加依赖项,它就会中断.此外,您已经有一个为您构建容器的实例,为什么要创建其他容器?
Die*_*rte 14
如果您在控制器之间进行呼叫,则存在缺陷或您想要进行重定向,这是完全有效的.如果是重定向,只需在控制器方法中返回如下:
return "redirect:/yourDestinationControllerPath";
Run Code Online (Sandbox Code Playgroud)
听起来你需要重构代码.将两个控制器之间的共同点提取到一个单独的类中,然后从任一控制器调用它.
你做的完全错了。Costi Ciudatu's有什么问题请看答案。
解决方案:你已经我的意见service layer and dao layer classes与你有关controllers。假设你有AccountController,你会有AccountService类(接口+实现)和AccountDao(接口+实现)。
现在,如果在用户登录(LoginController),你需要帐户,以便将自动装配AccountService中LoginController,你会得到用户的账户信息AccountService的方法。
| 归档时间: |
|
| 查看次数: |
59692 次 |
| 最近记录: |