首页 > 解决方案 > Micronaut 不是 Failfast

问题描述

我正在尝试使用 Micronaut。我注意到的一件事是 Micronaut 不会快速失败。

例如,如果我的 bean 中有这样的东西

@Value("${my.url}")
private String url;

如果没有使用 key my.url 定义的属性,那么

  1. 使用 Springboot,服务器将无法启动。
  2. 使用 Micronaut 服务器将启动。但是在尝试访问该变量时会引发异常。

我认为最好快速失败(如在springboot中)。所以想知道这是否也可以在 micronaut 中实现。

标签: 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"

推荐阅读