У меня есть приложение для весенней загрузки внутреннего интерфейса и интерфейс, разработанный с использованием angular4. Поскольку эти 2 при развертывании работают на разных портах (8080,4200), пользовательский интерфейс не отображается. На локальном сервере запуска angular с использованием приведенного ниже, он отлично работает на localhost: 4200 и показывает веб-интерфейс:
ng serve --proxy-config proxy.conf.json
где proxy.conf.json имеет содержимое:
{
"*": {
"target": "http://localhost:8080",
"secure": false,
"logLevel": "debug"
}
}
Но не при попытке интеграции с приложением springboot (localhost: 8080). Вероятно, перед развертыванием требуется, чтобы бизнес-логика ng (установка узла / npm и т. Д.) Была запечена.
Итак, я использовал ng build
, который скопировал сгенерированные файлы в выходной каталог - src / main / resources / static, и теперь он находится в пути приложения весенней загрузки. Запуск tomcat по-прежнему не показывает пользовательский интерфейс на localhost: 8080. Я вижу угловой символ / значок на вкладке Chrome, но ничего не отображается на HTML-странице.
Я также добавил метод контроллера для возврата index.html, чтобы он мог обслуживать статические файлы в пути.
@GetMapping("/")
public String index() {
return "forward:/index.html";
}
Но при этом просто отображается строка «forward: /index.html» вместо html-содержимого на веб-странице.
Нужно ли что-то изменить в этом index.html, чтобы он мог перенаправлять на созданные мной компоненты ng?
Не знаю, имеет ли значение изменение селектора в index.html. Поскольку мой основной компонент не является компонентом приложения (который по умолчанию является корневым компонентом), а компонентом входа, поэтому в index.html я изменил <app-root></app-root>
на селектор компонента входа <app-login></app-login>
; до сих пор ничего не отображается в пользовательском интерфейсе.
Похоже, Spring-Boot не может понять угловатые вещи и как маршрутизировать к основным компонентам ng.
Ниже приведен index.html:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Hello App</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
<app-root></app-root>
<script type="text/javascript" src="runtime.js"></script><script type="text/javascript" src="polyfills.js"></script><script type="text/javascript" src="styles.js"></script><script type="text/javascript" src="vendor.js"></script><script type="text/javascript" src="main.js"></script></body>
</html>
Структура проекта:
-src
-main
-java
- backend
- AppController
- AppService
- Main.java
- frontend
- src
- index.html
- app
-login
- login.component.html
- login.component.css
- login.component.ts
etc..
- resources
- static
- index.html
- application.properties
- ...
Как мне заставить интерфейс работать с внутренним сервером при развертывании? Нужно ли добавлять какой-либо аргумент или конфигурацию в application.properties, чтобы приложение обслуживало статический контент из / resources при запуске? Нужно ли добавлять какой-либо resourceLocationHandler для его обслуживания?
Любая помощь, очень ценится!