为了能够验证我们的Spring Boot应用程序的启动和关闭能力,我们希望配置一个startup.log和shutdown.log捕获事件来引导和关闭该应用程序。
对于启动,所有内容最多:
Root WebApplicationContext: initialization completed in {x} ms
Run Code Online (Sandbox Code Playgroud)
要关闭所有内容,请执行以下操作:
Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@53bd8fca: startup date [Wed Aug 19 09:47:10 PDT 2015]; root of context hierarchy
Run Code Online (Sandbox Code Playgroud)
到最后。
这是特定于容器的东西吗?(Tomcat vs码头vs Undertow)
我的 Spring Reactive Web API 应该能够根据查询参数进行过滤,但我正在努力做到这一点。
GET /v1/address?type=business
Run Code Online (Sandbox Code Playgroud)
应该返回系统中所有类型为“business”的地址(只是一个例子,因为我没有发布实际需求)。如果该参数不存在,则只返回所有地址。
[
{ "id" : 1, "type" : "business", "street" : "..."},
{ "id" : 2, "type" : "business", "street" : "..."},
...
}
Run Code Online (Sandbox Code Playgroud)
我正在使用路由器功能来映射请求:
public RouterFunction<ServerResponse> route(AddressHandler handler) {
return route(GET("/v1/address"), handler::getAddresses);
}
Run Code Online (Sandbox Code Playgroud)
但我正在努力确定如何检查参数,如果不存在,则返回所有地址。
class AddressHandler {
Mono<ServerResponse> getAddressesFilteredOrNot(ServerRequest request) {
Optional<String> addressType = request.getQueryParam("type");
...
}
}
Run Code Online (Sandbox Code Playgroud)
现在 Optional.ifPresent() 不起作用,我无法从该方法返回:
class AddressHandler {
Mono<ServerResponse> getAddressesFilteredOrNot(ServerRequest request) {
Optional<String> addressType = request.getQueryParam("type");
// invalid
addressType.ifPresent(addrType -> {
return ServerResponse.ok()
.body(this.service.getAddressByType(addrType),
Address.class); …
Run Code Online (Sandbox Code Playgroud)