HTML Diff
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