Краткий ответ: это зависит от качества вашей реализации.
Для более длинного ответа я хотел бы вначале подвести итог цели архитектуры программного обеспечения.Разделение проекта на несколько уровней в разработке программного обеспечения служит для разделения вашего кода «физически» до того, как вы и ваша команда начнете писать код.Процесс определения вашей архитектуры заранее может дать вам представление о том, как именно весь ваш проект будет структурирован и какие языки или рамки могут / должны использоваться.
Пример трехуровневой архитектуры:
- Уровень представления : интерфейс вашего приложения.Может быть в HTML / CSS или в веб-фреймворке, таком как Angular или React.Вы хотите, чтобы этот слой отображал данные, которые он извлекает, и выполнял как можно меньше «размышлений».
- Уровень приложения : это промежуточное программное обеспечение вашего приложения.Может быть реализован на любом языке, который вам нравится, например, PHP, Java, C #, Python и т. Д. Этот уровень является «движком» вашего программного обеспечения и соединяет уровень представления с уровнем данных.Вам не нужны представления или пользовательский интерфейс в этом слое, поскольку это «великий мыслитель» отряда.
- Уровень данных : ваша база данных или система хранения.Может быть в MySQL, PostgreSQL, MongoDB и т. Д. Уровень данных будет доступен прикладному уровню через вызовы API (примечание: сам вызов API инициируется уровнем представления, но уровень представления не знает, что такоеприкладной уровень будет делать с этим вызовом, это черный ящик между двумя) .
По семантическим причинам я не могу сказать, что Angular / Spring "является трехуровневой архитектурой", так как это полностьюзависит от вашей реализации.Оба могут быть трехуровневыми, если вы этого хотите.Однако в вашем случае правильно заявить, что Angular должен быть уровнем представления, а Spring Boot должен быть прикладным уровнем.
Использование Angular в качестве уровня представления (и только уровня представления) имеет большой смысл.Ваше приложение Angular не должно заботиться о данных, которые оно получает, оно должно только отображать их.Поэтому Spring Boot будет компонентом, который доставляет данные с уровня данных на уровень представления.
Хорошая реализация делает трехуровневую архитектуру взаимозаменяемой.Не хотите больше использовать Angular?Просто перейдите на другую платформу, и данные, которые увидят ваши клиенты, останутся прежними.В этом сила хорошо продуманной архитектуры и того, чего вы хотите достичь с ее помощью.
Википедия описывает архитектуру программного обеспечения следующим образом:
"Архитектура программного обеспечения относится к структурам высокого уровняпрограммная система и дисциплина создания таких структур и систем. Каждая структура включает в себя программные элементы, отношения между ними и свойства как элементов, так и отношений. Архитектура программной системы представляет собой метафору, аналогичную архитектуре здания.выполняет функции системы и развивающегося проекта, излагая задачи, необходимые для выполнения командами разработчиков. "
Поэтому, чтобы окончательно ответить на ваш вопрос: Ваша настройка определяет вашуархитектура .Если вы используете Angular в качестве своего пользовательского интерфейса, Spring Boot в качестве набора сервисов и базу данных для хранения ваших данных, у вас будет трехуровневая архитектура.Если вы решите создать свой веб-интерфейс в Spring Boot без Angular, у вас будет все еще трехуровневая архитектура, но Spring Boot использует два из этих уровней (именно поэтому Spring точно следует шаблону MVC).