如何在 micronaut 中获取当前主机和端口?
How to get current host and port in micronaut?
我正在尝试获取 micronaut 应用程序中的当前主机和端口。我如何以动态方式获取它?
我试过 @Value("{micronaut.server.host}") 和 @Value("{micronaut.server.port}") 但没有用。
@Controller("/some/endpoint")
class SomeController {
@Value("{micronaut.server.host}")
protected String host;
@Value("{micronaut.server.port}")
protected Long port;
}
我的错误。正如@JaredWare 所说,我们应该使用 Environment
来检索应用程序的 属性。
@Controller("/some/endpoint")
class SomeController {
@Inject
protected Environment env;
@Get
public String someMethod () {
Optional<String> host = this.env.getProperty("micronaut.server.host", String.class);
return host.orElse("defaultHost");
}
}
有多种方法可以做到这一点。一种是从 EmbeddedServer
.
检索它们
import io.micronaut.http.HttpStatus;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
import io.micronaut.runtime.server.EmbeddedServer;
@Controller("/demo")
public class DemoController {
protected final String host;
protected final int port;
public DemoController(EmbeddedServer embeddedServer) {
host = embeddedServer.getHost();
port = embeddedServer.getPort();
}
@Get("/")
public HttpStatus index() {
return HttpStatus.OK;
}
}
您拥有它的原始方式与从 environment
中检索它的方式相同。您只是在 @Value
注释中遗漏了 $
。
@Value("${micronaut.server.host}")
等同于 env.getProperty("micronaut.server.host", String.class)
这将检索配置的任何内容。相反,如果您想从嵌入式服务器本身检索它,您也可以这样做,因为实际端口可能与配置的端口不同。这是因为可以简单地不配置端口,或者因为配置值为 -1,表示随机端口。
我正在尝试获取 micronaut 应用程序中的当前主机和端口。我如何以动态方式获取它?
我试过 @Value("{micronaut.server.host}") 和 @Value("{micronaut.server.port}") 但没有用。
@Controller("/some/endpoint")
class SomeController {
@Value("{micronaut.server.host}")
protected String host;
@Value("{micronaut.server.port}")
protected Long port;
}
我的错误。正如@JaredWare 所说,我们应该使用 Environment
来检索应用程序的 属性。
@Controller("/some/endpoint")
class SomeController {
@Inject
protected Environment env;
@Get
public String someMethod () {
Optional<String> host = this.env.getProperty("micronaut.server.host", String.class);
return host.orElse("defaultHost");
}
}
有多种方法可以做到这一点。一种是从 EmbeddedServer
.
import io.micronaut.http.HttpStatus;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
import io.micronaut.runtime.server.EmbeddedServer;
@Controller("/demo")
public class DemoController {
protected final String host;
protected final int port;
public DemoController(EmbeddedServer embeddedServer) {
host = embeddedServer.getHost();
port = embeddedServer.getPort();
}
@Get("/")
public HttpStatus index() {
return HttpStatus.OK;
}
}
您拥有它的原始方式与从 environment
中检索它的方式相同。您只是在 @Value
注释中遗漏了 $
。
@Value("${micronaut.server.host}")
等同于 env.getProperty("micronaut.server.host", String.class)
这将检索配置的任何内容。相反,如果您想从嵌入式服务器本身检索它,您也可以这样做,因为实际端口可能与配置的端口不同。这是因为可以简单地不配置端口,或者因为配置值为 -1,表示随机端口。