我试图找出一种最简单的方法来控制基本Spring Boot RESTful服务的404 Not Found处理程序,例如Spring提供的示例:
https://spring.io/guides/gs/rest-service/
而不是让它返回默认的Json输出:
{
"timestamp":1432047177086,
"status":404,
"error":"Not Found",
"exception":"org.springframework.web.servlet.NoHandlerFoundException",
"message":"No handler found for GET /aaa, ..."
}
或者有比抛出并处理NoHandlerFoundException更好的方法吗?
它工作得很好。
当您使用SpringBoot时,它不会显式处理(未找到404),它使用WebMvc错误响应。如果您的Spring Boot应该处理该异常,那么您应该对Spring Boot进行一些黑客攻击。对于404异常类是NoHandlerFoundException如果要在@RestControllerAdvice类中处理该异常,则必须在应用程序类中添加@EnableWebMVC注释并设置setThrowExceptionIfNoHandlerFound(true);在DispatcherServlet中。请参阅守则
@SpringBootApplication
@EnableWebMvc
public class Application {
@Autowired
private DispatcherServlet servlet;
public static void main(String[] args) throws FileNotFoundException, IOException {
SpringApplication.run(Application.class, args);
}
@Bean
public CommandLineRunner getCommandLineRunner(ApplicationContext context) {
servlet.setThrowExceptionIfNoHandlerFound(true);
return args -> {};
}
}
在此之后,您可以在@RestControllerAdvice类中处理NoHandlerException
@RestControllerAdvice
public class AppException {
@ExceptionHandler(value={NoHandlerFoundException.class})
@ResponseStatus(code=HttpStatus.BAD_REQUEST)
public ApiError badRequest(Exception e, HttpServletRequest request, HttpServletResponse response) {
e.printStackTrace();
return new ApiError(400, HttpStatus.BAD_REQUEST.getReasonPhrase());
}
}
public class ApiError {
private int code;
private String message;
public ApiError(int code, String message) {
this.code = code;
this.message = message;
}
public ApiError() {
}
//getter & setter methods...
}
我是Spring Boot的新手,并试图构建一个简单的Web应用程序。我定义了一个包含我的url映射的控制器类,但在浏览器上它给我一个白标页面错误(404)。我无法理解为什么它无法映射。我尝试过更改我的组件扫描基础包,但它仍然没有将我重定向到控制台中的页面“abc”或打印“在控制器中”。 pom.xml 控制器类 主类
我正在intellij中运行Spring Boot应用程序,我所有的计划任务和一切都正常工作,但是我在@RestController和@Request estMap注册的控制器没有注册。当我尝试访问这些时,我得到404,而当我使用eclipse时,同样工作正常。甚至我的ide控制台也显示rest控制器已注册: 无法猜测可能会出什么问题?
我已经在这个问题上坚持了一段时间,感谢任何帮助。我正在运行弹性搜索高级REST客户端版本的Spring Boot版本,并在Spring Data-Elasticsearch版本中使用version。我得到下面的错误。我尝试了以下尝试来修复,但都没有。 多次更改Spring启动版本 多次更改ES版本 我已经结清了我的债务。m2文件夹并多次重新下载maven依赖项 我下面要讨论的问题是 试图调用不存在
问题内容: 我得到的是一个错误的说法 这是文件内的代码 这是我收到的控制台消息(加上3次刷新页面的尝试): 关于可能出什么问题的任何建议? 问题答案: 你太早了: 这是在你的任何路由被注册之前执行的。将这两行到结束你的文件。 接下来,你输入的第一行不正确: 没有功能;应该这样。
我指的是一个问题,已经被问了很多次,但其他地方发布的解决方案没有解决我的问题ie Socket.io.js找不到。 错误消息为 获取http://127.0.0.1:3000/socket.io/socket.io.js 404 一些附加信息:在我的app.js中:我引用了服务器套接字 '/javascripts/sockets/client.js'是我的客户端套接字:
我目前有一个Spring引导应用程序,其中包含2个配置文件:application.yaml和application-test.yaml.应用程序测试配置文件已正确加载,该文件中的任何设置都按预期工作。 然而,我有一个问题,特别是一个设置是Spring。jpa。冬眠ddl auto='update'。在应用程序中定义此设置时。yaml文件它导致我的JPA单元测试失败,异常为“Table”PG_类“