Я пытаюсь создать несколько веб-фильтров в приложении Spring-Boot WebFlux и заметил, что все разработанные мной почтовые операции работали только с конечной точкой Actuator, но не с моими собственными конечными точками.
Во времяВ своем анализе я заметил, что когда я вызываю конечную точку привода (например, здоровье), Mono завершается, как и ожидалось.Однако, когда я вызвал свою конечную точку, моно испустил сигнал отмены.Это ожидаемое поведение?
Зависимости:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
</parent>
<groupId>test</groupId>
<artifactId>tests</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
Мой код:
@SpringBootApplication
@RestController
public class Main {
private static final Logger LOGGER = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
@Bean
public WebFilter newFilter() {
return (exchange, chain) -> chain.filter(exchange)
.doFinally(signalType -> {
LOGGER.info("Status: {}", signalType);
})
.doAfterSuccessOrError(((aVoid, throwable) -> {
LOGGER.info("Only actuators come to here.");
}));
}
@GetMapping("/hello")
public Mono<String> probe() {
return Mono.fromCallable(() -> "world");
}
}
curl http://localhost:8080/test
Консоль: Статус: отменить
curl http://localhost:8080/actuator/health
Консоль: сюда приходят только приводы.Статус: onComplete
Я ожидал, что все вызовы конечной точки будут выполнять функцию doAfterSuccessOrError, но только Здоровье привода выполняет.