Я использую замечательную новую функцию записи ApplicationStartup Spring 5.3 / Spring Boot 2.4 с BufferedApplicationStartup (предоставляется только SB 2.4).
Однако,
Это где-то задокументировано? Это настраивается? Было бы здорово, если бы данные не терялись после первого звонка. Или это ошибка?
@RoarS. Код выглядит примерно так: ``` @SpringBootApplication public class MyApp { public static void main(String[] args) { SpringApplication app = new SpringApplication(MyApp .class); app.setApplicationStartup (новый BufferingApplicationStartup (2048)); app.run(аргументы); } } ```
Это ожидаемое поведение здесь, поскольку мы опустошаем буфер перед отправкой событий запуска по сети. Использование метода HTTP POST также показывает, что этот метод не свободен от побочных эффектов.
Этот аспект можно было бы лучше задокументировать, поэтому не стесняйтесь создавать проблему.
Цель здесь состоит в том, чтобы как можно скорее освободить память от этих буферизованных событий, поскольку их может быть много. Реализация Java Flight Recorder также интересна, если вы хотите записывать события запуска и получать дополнительную информацию, например сборщик мусора и загрузку классов.
Как только приложение станет доступным, большинство событий запуска должно быть там. Если в вашем приложении есть ленивые компоненты, вы не получите эти данные, пока они не будут вызваны, что может произойти в любое время во время выполнения приложения.
Спасибо, что прояснили это — я поднял github.com/spring-projects/spring-boot/issues/24605, чтобы улучшить документы.
Привет. Это интересная тема. Не могли бы вы предоставить нам свой код, чтобы провести локальное тестирование? БР