Java 使用嵌套调用编写Spring引导控制器

Java 使用嵌套调用编写Spring引导控制器,java,spring,spring-boot,Java,Spring,Spring Boot,新的春天启动在这里。我正在尝试一个非常简单的应用程序,并通过转到localhost:8080对其进行测试 这很好: @RestController @RequestMapping(path = "/") public class MyController { @GetMapping(path = "/", produces = "application/json") public String sayHello() {

新的春天启动在这里。我正在尝试一个非常简单的应用程序,并通过转到
localhost:8080
对其进行测试

这很好:

@RestController
@RequestMapping(path = "/")
public class MyController {
    @GetMapping(path = "/", produces = "application/json")
    public String sayHello() {
        return "Hi!";
    }
}
但当我尝试从控制器调用其他函数时:

@RestController
@RequestMapping(path = "/")
public class MyController {

    private String sayHi() {
        return "Hi from a nested call";
    }
    
    @GetMapping(path = "/", produces = "application/json")
    public String sayHello() {
        return sayHi();
    }
}
我得到以下错误:

此应用程序没有/error的显式映射,因此您将其视为回退

我尝试对调用的函数使用注释,但仍然得到相同的结果。这个错误的原因是什么?这里的错误描述似乎不准确,对吗


后续相关问题。在我的主要课程中,我有:

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

run()
函数之前进行其他调用(任何标准Java调用)有什么问题吗?之后呢?

您在
sayHello
v2中缺少一个return语句。“它甚至不应该编译。”罗德约夫·费森皮斯补充道。我在我的实际代码中确实有它。您的“错误”是一条通用消息,说明您没有配置错误处理程序。您可能在日志中的某个地方有一个实际的堆栈跟踪;否则,请尝试配置错误映射处理程序以获取错误映射处理程序。如果您想在调用控制器方法之前检查/处理某些内容,在调用控制器方法之后,您可以检查提供preHandle()、postHandle()和after completion()的spring拦截器。这里没什么问题。我试过你的实现。工作很好。您是否遗漏了有问题的内容?