Существуют ли предостережения от использования загрузчика классов с весенней загрузкой в ​​производстве? - PullRequest
2 голосов
/ 07 ноября 2019

что

Я бы хотел использовать jdk.internal.loader.ClassLoaders$AppClassLoader вместо пружинных сапог org.springframework.boot.loader.LaunchedURLClassLoader. Однако я не уверен в том, как это повлияет на время загрузки при загрузке.

почему

Недавно мы столкнулись с java.lang.InstantiationError при выполнении вызовов репозитория Spring внутри java's parallelStream(),Я узнал, что потоки в параллельном потоке используют AppClassLoader и, следовательно, не могут найти классы приложений, находящиеся в LaunchedURLClassLoader, дочернем элементе AppClassLoader в иерархии загрузчиков классов.

how

В документации для пружинных загрузчиков показано, что вы можете запускать распакованную банку с пружинными загрузками без использования их загрузчика классов. Это удобно означает, что классы приложений также загружаются в AppClassLoader, что решает нашу проблему с помощью parallelStream().

$ java -cp BOOT-INF/classes:BOOT-INF/lib/* com.example.MyApplication

NB : это также и то, как Intellij IDEA выполняет spring-bootприложения.

вопрос

Кто знает, делает ли загрузчик классов с весенней загрузкой больше, чем включение исполняемых файлов jar и war, о которых я должен знать. Я нашел документацию недостаточно четкой. Безопасно ли не использовать загрузчик классов с весенней загрузкой в ​​производстве?

...