micronaut - Micronaut 不是 Failfast
问题描述
我正在尝试使用 Micronaut。我注意到的一件事是 Micronaut 不会快速失败。
例如,如果我的 bean 中有这样的东西
@Value("${my.url}")
private String url;
如果没有使用 key my.url 定义的属性,那么
- 使用 Springboot,服务器将无法启动。
- 使用 Micronaut 服务器将启动。但是在尝试访问该变量时会引发异常。
我认为最好快速失败(如在springboot中)。所以想知道这是否也可以在 micronaut 中实现。
解决方案
您可以使用@ConfigurationProperties
它并确保它是@Context
范围,因为默认情况下,Micronaut bean 不会在启动时创建。通过使它们成为@Context
范围,将在应用程序启动时创建 bean。
以下:
import io.micronaut.context.annotation.*;
import javax.validation.constraints.*;
@ConfigurationProperties("my")
@Context
class MyConfig {
private @NotNull String url;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
结果是
08:38:38.568 [main] ERROR io.micronaut.runtime.Micronaut - Error starting Micronaut server: Bean definition [fresh.java.MyConfig] could not be loaded: Error instantiating bean of type [fresh.java.MyConfig]
Message: Validation failed for bean definition [fresh.java.MyConfig]
List of constraint violations:[
url - must not be null
]
服务器启动时。
确保添加此依赖项
compile "io.micronaut.configuration:micronaut-hibernate-validator"
推荐阅读
- esp32 - ESP32 闪存加密
- excel - 在 excel 查询编辑器中转换时间范围的 api 数据并绘制图表的更快方法
- c# - 将 Angular 应用程序迁移到 NET 6 时,区域不起作用
- html - 在 TailWind 中应用边距顶部时,导航也会移动
- tags - 使用嵌套条件标签处理用户输入的最佳实践
- javascript - 开玩笑地测试输入类型文件
- python - 如何对元组进行排序?
- python - Python 3 - 无法在函数内增加全局变量
- angular - Ngx-bootstrap modal:将提示传递给 Modal 组件时出错
- c++ - 为什么我的代码没有运行整个程序但没有产生任何错误?