当前位置:  开发笔记 > 编程语言 > 正文

使用Spring Boot + REST应用程序获取"无消息可用"错误

如何解决《使用SpringBoot+REST应用程序获取"无消息可用"错误》经验,为你挑选了2个好方法。

我已经创建了演示Spring Boot项目并实现了Restful服务,如下所示

@RestController
public class GreetingsController {
    @RequestMapping(value="/api/greetings", method=RequestMethod.GET, produces=MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity getGreetings(){
        return new ResponseEntity("Hello World", HttpStatus.OK);
    }
}

当我尝试使用Postman工具调用带有URL" http:// localhost:8080/api/greetings "作为请求方法GET的服务时,我收到以下错误消息

{
  "timestamp": 1449495844177,
  "status": 404,
  "error": "Not Found",
  "message": "No message available",
  "path": "/api/greetings"
}

Per Spring Boot应用程序,我不必在web.xml中配置Spring Dispatcher servlet.

有人可以帮我找出这里遗漏的地方吗?



1> cahen..:

你可能错过了@SpringBootApplication:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

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

@SpringBootApplication包括@ComponentScan扫描包所在的包和所有儿童包.您的控制器可能不在其中任何一个.


尝试使用@SpringBootApplication(scanBasePackages = {"com.xxx.yyy"})这里com.xxx.yyy是基础包.你的控制器应该在这个包内

2> Gene..:

三种可能的解决方案:

1)确保具有@Controller的YourController.java文件和具有@SpringBootApplication的YourSpringBootFile.java文件位于同一软件包中。

例如,这是错误的:

这是正确的方法:

所以,您知道我在说什么,这是我的WebController.java文件:

@RestController
public class WebController {
private static final String template = "Hello, %s!";
    private final AtomicLong counter = new AtomicLong();

    @RequestMapping(value= "/hi", method = RequestMethod.GET)
    public @ResponseBody Greeting sayHello(
            @RequestParam(value = "name", required = false, defaultValue = "Stranger") String name) {
        System.out.println("Inside sayHello() of WebController.java");
        return new Greeting(counter.incrementAndGet(), String.format(template, name));
    }
}

这是我的JsonPostExampleProj1Application.java:

@SpringBootApplication
public class JsonPostExampleProj1Application {

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

2)如果您希望控制器位于YourSpringBootFile.java包之外的其他包中,请遵循以下说明= Spring:在应用程序主方法中运行多个“ SpringApplication.Run()”

3)尝试在Controller类的顶部使用@RestController而不是@Controller。


这对我有用:_尝试在控制器类的顶部使用RestController而不是Controller_
推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有