0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: проектная работа, спринг, разработка на spring framework</p>
1
<p>Теги: проектная работа, спринг, разработка на spring framework</p>
2
<p>Предлагаем вашему вниманию очередную проектную работу по курсу "<a>Разработчик на Spring Framework</a>". Её выполнил<strong>Пётр Виличинский</strong>, выпускник группы 2019 года. Используя знания, полученные на курсе, он создал Личный кабинет клиентов.</p>
2
<p>Предлагаем вашему вниманию очередную проектную работу по курсу "<a>Разработчик на Spring Framework</a>". Её выполнил<strong>Пётр Виличинский</strong>, выпускник группы 2019 года. Используя знания, полученные на курсе, он создал Личный кабинет клиентов.</p>
3
<p>Как сказал сам Пётр, основные цели проекта были следующие: - разобраться с моментами, пропущенными при выполнении ДЗ; - сделать полноценное приложение, максимально приближенное к использованию в реальной жизни и работающее по принципу "Бери и пользуйся"; - задействовать микросервисы; - разместить один из микросервисов на нескольких узлах; - в итоге получить портфолио по Spring.</p>
3
<p>Как сказал сам Пётр, основные цели проекта были следующие: - разобраться с моментами, пропущенными при выполнении ДЗ; - сделать полноценное приложение, максимально приближенное к использованию в реальной жизни и работающее по принципу "Бери и пользуйся"; - задействовать микросервисы; - разместить один из микросервисов на нескольких узлах; - в итоге получить портфолио по Spring.</p>
4
<h2>Особенности и применение</h2>
4
<h2>Особенности и применение</h2>
5
<p>Личный кабинет - это приложение для клиентов предприятия, с которыми есть договорные отношения на постоянной основе. В ЛК клиент может увидеть свой баланс, начисления, оплаты. Также у клиента есть возможность оставлять заявки и видеть принятые по ним решения. Присутствует система уведомлений клиентов по электронной почте и sms.</p>
5
<p>Личный кабинет - это приложение для клиентов предприятия, с которыми есть договорные отношения на постоянной основе. В ЛК клиент может увидеть свой баланс, начисления, оплаты. Также у клиента есть возможность оставлять заявки и видеть принятые по ним решения. Присутствует система уведомлений клиентов по электронной почте и sms.</p>
6
<p>Основная задача приложения ЛК - показ клиенту информации по его договорам, и эта информация должна быть передана в приложение ЛК сторонней системой (АСР, биллинг, 1C) через API приложения. Другой вариант интеграции с ЛК - набор скриптов, которые получают из БД приложения по API всех клиентов, предоставляемые им услуги, баланс и на основании этих данных производят начисления, выставляют счета, шлют уведомления, опять же, через API приложения.</p>
6
<p>Основная задача приложения ЛК - показ клиенту информации по его договорам, и эта информация должна быть передана в приложение ЛК сторонней системой (АСР, биллинг, 1C) через API приложения. Другой вариант интеграции с ЛК - набор скриптов, которые получают из БД приложения по API всех клиентов, предоставляемые им услуги, баланс и на основании этих данных производят начисления, выставляют счета, шлют уведомления, опять же, через API приложения.</p>
7
<p><strong>Примеры использования</strong>: - кабельное ТВ: ежемесячная абонплата, подключение, ремонт и настройка; - офисный центр: сдача в аренду офисов, предоставление интернета и телефонии, уборка помещений, офисная мебель и техника в аренду; - и многие другие…</p>
7
<p><strong>Примеры использования</strong>: - кабельное ТВ: ежемесячная абонплата, подключение, ремонт и настройка; - офисный центр: сдача в аренду офисов, предоставление интернета и телефонии, уборка помещений, офисная мебель и техника в аренду; - и многие другие…</p>
8
<p>Автору работы выбор этой темы именно для выпускной работы по Spring framework показался удачным потому, что в силу своей специфики приложение требует минимума интерактивного взаимодействия с пользователем в браузере и позволяет больше времени посвятить разработке backend.</p>
8
<p>Автору работы выбор этой темы именно для выпускной работы по Spring framework показался удачным потому, что в силу своей специфики приложение требует минимума интерактивного взаимодействия с пользователем в браузере и позволяет больше времени посвятить разработке backend.</p>
9
<h2>Технологии и конфигурация</h2>
9
<h2>Технологии и конфигурация</h2>
10
<p>При реализации проектной работы были использованы следующие технологии:</p>
10
<p>При реализации проектной работы были использованы следующие технологии:</p>
11
<ul><li>Spring Boot;</li>
11
<ul><li>Spring Boot;</li>
12
<li>Data JPA + Hibernate + Liquibase + Postgres/H2;</li>
12
<li>Data JPA + Hibernate + Liquibase + Postgres/H2;</li>
13
<li>Rest controller для API и UI;</li>
13
<li>Rest controller для API и UI;</li>
14
<li>UI: Ajax/SPA, Vue.js и jQuery;</li>
14
<li>UI: Ajax/SPA, Vue.js и jQuery;</li>
15
<li>Spring Security: form-based для UI и Basic для API;</li>
15
<li>Spring Security: form-based для UI и Basic для API;</li>
16
<li>Spring Integration для уведомлений клиентов по почте (Spring Mail) и СМС;</li>
16
<li>Spring Integration для уведомлений клиентов по почте (Spring Mail) и СМС;</li>
17
<li>Config server, Eureka и Feign;</li>
17
<li>Config server, Eureka и Feign;</li>
18
<li>Spring Shell в примерах работы с API;</li>
18
<li>Spring Shell в примерах работы с API;</li>
19
<li>Docker.</li>
19
<li>Docker.</li>
20
</ul><p>Также обратите внимание на компоненты:</p>
20
</ul><p>Также обратите внимание на компоненты:</p>
21
<p>Ниже представлена ER-диаграмма предметной области проекта (тут небольшая реклама сервиса https://dbdiagram.io/ читателям на заметку - он отлично и бесплатно строит подобные диаграммы по тексту DDL). Во время работы автора постоянно преследовала мысль, что для выпускного проекта такое количество сущностей - многовато, ведь включение в API и написание юнит-тестов для каждой из них требует времени и при этом не приносит новых знаний и опыта. Но получилась хорошая демонстрация, как<strong>Spring framework помогает ускорить и упростить разработку</strong>.</p>
21
<p>Ниже представлена ER-диаграмма предметной области проекта (тут небольшая реклама сервиса https://dbdiagram.io/ читателям на заметку - он отлично и бесплатно строит подобные диаграммы по тексту DDL). Во время работы автора постоянно преследовала мысль, что для выпускного проекта такое количество сущностей - многовато, ведь включение в API и написание юнит-тестов для каждой из них требует времени и при этом не приносит новых знаний и опыта. Но получилась хорошая демонстрация, как<strong>Spring framework помогает ускорить и упростить разработку</strong>.</p>
22
<p>Интересным моментом в проекте была попытка совместить в одном проекте двух видов авторизации:<strong>form-based</strong>и<strong>http-basic</strong>. Для авторизации пользователей - клиентов ЛК был выбран тип form-based. Но "системные" endpoint'ы типа actuator'а тоже должны быть защищены от неавторизованного доступа, и в то же время form-based авторизация для них не очень подходит.</p>
22
<p>Интересным моментом в проекте была попытка совместить в одном проекте двух видов авторизации:<strong>form-based</strong>и<strong>http-basic</strong>. Для авторизации пользователей - клиентов ЛК был выбран тип form-based. Но "системные" endpoint'ы типа actuator'а тоже должны быть защищены от неавторизованного доступа, и в то же время form-based авторизация для них не очень подходит.</p>
23
<p>Посмотреть подробности реализации проектной работы “Личный кабинет клиента” можно по<a>ссылке на GitHub</a>. Автору работы можно написать по адресу<strong>p913@yandex.ru</strong>.</p>
23
<p>Посмотреть подробности реализации проектной работы “Личный кабинет клиента” можно по<a>ссылке на GitHub</a>. Автору работы можно написать по адресу<strong>p913@yandex.ru</strong>.</p>
24
24