controller调用另一个controller中的方法 获取返回值_Java Web 面试中关于Spring MVC必问题,不看血亏...
时间: 2023-08-01 18:06:45 浏览: 61
在Spring MVC中,一个Controller可以调用另一个Controller中的方法来获取返回值,但是这并不是一个好的做法,因为它破坏了控制反转的原则。
更好的方法是将需要共享的方法抽象到一个Service层中,并将Service层注入到需要使用它的Controller中。这样可以避免Controller之间的依赖关系,同时也能更好地进行单元测试和代码重用。
具体实现方式如下:
1. 创建一个Service层,将需要共享的方法写在Service层中。
2. 在需要使用Service层的Controller中,通过@Autowired或@Resource等注解注入Service层。
3. 在Controller中调用Service层中的方法,获取返回值并进行下一步操作。
示例代码如下:
```java
@Service
public class MyService {
public String myMethod() {
return "Hello World!";
}
}
@Controller
public class MyController {
@Autowired
private MyService myService;
@RequestMapping("/myController")
public String myControllerMethod(Model model) {
String result = myService.myMethod();
model.addAttribute("result", result);
return "myView";
}
}
```
在上面的代码中,MyController通过@Autowired注解注入了MyService,然后调用了MyService中的myMethod方法获取返回值,并将返回值通过Model传递给视图层。