这似乎是 1.2.x 中的行为:如果应用程序至少有一个模型/实体,因此依赖于 JPA,并且数据库连接(mysql)失败(超时或数据库关闭),那么控制器方法会失败即使方法不使用数据库,在到达方法代码之前也会出现 500 错误。
例如,这可以防止编写数据库健康检查控制器方法,或者对数据库错误有一定弹性的方法。
我已经用一个简单的项目验证了这一点。重现:
- 创建一个新的应用程序
- 创建至少一个模型/实体并定义一个 mysql 数据库连接。
- 创建一个简单的控制器方法,它只呈现文本(不使用数据库)和相关的路由(比如 /playdbtest)
测试 - 启动应用程序并:
- 当数据库可用时调用 playdbtest(应该可以)
- 关闭mysql并在数据库关闭时调用playdbtest(将失败)
- 禁用/删除实体类并重新开始播放/#2 将起作用
问题:有没有办法规避这种行为或捕获错误?一个应用程序不应该因为它的数据库连接失败而完全失败——尽管它服务请求的能力会受到损害。
谢谢。