Почему статический контент из зависимостей maven подается в spring-boot? - PullRequest
1 голос
/ 23 мая 2019

У меня есть простой многомодульный проект Maven. Первый модуль представляет собой угловой интерфейс, второй модуль представляет собой приложение с пружинной загрузкой.

Я настроил модуль frontend maven для создания угловых приложений и сбора собранных файлов в frontend.jar. В результате у меня следующая структура архива:

jar -tf frontend.jar | sort
---------------------------
META-INF/
META-INF/MANIFEST.MF
META-INF/maven/
META-INF/maven/sample-project/
META-INF/maven/sample-project/frontend/
META-INF/maven/sample-project/frontend/pom.properties
META-INF/maven/sample-project/frontend/pom.xml
static/
static/3rdpartylicenses.txt
static/assets/
static/assets/img/
static/assets/img/loading.gif
static/favicon.png
static/index.html
static/main.8e44da4898d2a7a95ed3.js
static/polyfills.d72edd4c76dc8f27444a.js
static/runtime.a66f828dca56eeb90e02.js
static/styles.0afb74a990d73ad0b544.css

После этого я добавляю в файл Spring-boot .pom зависимость от модуля внешнего интерфейса и собираю весь проект.

<dependency>
    <groupId>sample-project</groupId>
    <artifactId>frontend</artifactId>
    <version>${version}</version>
</dependency>

Наконец, после того как я запустил веб-приложение с весенней загрузкой, я обнаружил, что когда я перехожу на localhost:port/ url, я получаю свое угловое приложение.

Вопрос в следующем: как spring-boot понимает, что он должен обслуживать статический контент из frontend зависимости? Обратите внимание, что у меня нет статической папки в ресурсах модуля весенней загрузки.

1 Ответ

1 голос
/ 23 мая 2019

В Java "jars" - это просто способ организации приложения для развертывания.Вы не можете обращаться к классам или ресурсам, основываясь на их фактических банках или расположении на диске (если вы не пишете свои ClassLoader).Такие физические данные недоступны во время выполнения.С точки зрения времени исполнения все выровнено, немного похоже на слои докера.

Итак, на самом деле нет понятия "какой класс происходит от какой зависимости".Это иногда приводит к незначительным ошибкам, но также является причиной существования таких технологий, как jarjar, OSGi и новые модули Java 9.

Spring Boot, как правило, обслуживает все, что доступно в classpath в / static.Нет понятия «из какой банки» или «из какой директории» поступают ресурсы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...