1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/section2014-matilda

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Ты — моя единственная любовь

О названии

Matilda, я всегда интересовался происхождением её имени. Возможно, оно возникло после долгих размышлений. Я очень рад, что она появилась в моей жизни, принеся с собой сожаления и упрямство. Надеюсь, что благодаря открытому миру я смогу внести свой вклад в улучшение всего.

Фильм

«Леон: Профессионал» — это тёплая и грустная история. В ней рассказывается о девочке по имени Матильда (Matilda). Она как луч света освещает и согревает мир убийцы Леона, или же они согревают друг друга. Мне очень нравится этот фильм, особенно смелая и любящая девочка Матильда.

Матильда: Неужели жизнь всегда такая трудная, или только детство?

Леон: Всегда.

Матильда: Леон, мне кажется, я тебя люблю. Это мой первый раз, когда я кого-то люблю. Ты знаешь?

Леон: Ты никогда никого не любила, откуда ты знаешь, что это любовь?

Матильда: Потому что я это чувствую.

Леон: Где?

Матильда: В моём животе, раньше там был узел, а теперь его нет.

Леон: Матильда, я рад, что твой живот больше не болит, но это ничего не значит.

Мечта

Давно, возможно, когда я только начал изучать разработку программного обеспечения, у меня появилась идея создать идеальную систему прикладного программного обеспечения. Хотя время идёт, эта идея часто откладывается; с развитием технологий разработки программного обеспечения я постепенно понимаю, что нет ничего идеального, есть только лучшее. Идеальные вещи должны существовать только в воображении.

И вот она пришла, как будто я дал себе обещание. Как я уже говорил, Matilda представляет всё прекрасное в этом мире (по крайней мере, в моём сердце).

Заключение

Matilda на самом деле не имеет особых отличий. Она представляет собой систему управления правами доступа на основе Springboot, использующую Spring Security и Mybatis Plus, разработанную с использованием метода плагинов и зависящую от Hutool, с шаблонизатором Thymeleaf.

Особенности приложения

  • Эффективность. Да, вы не ослышались. По сравнению с современными распределёнными приложениями, поскольку это монолитное приложение без посредников, оно более эффективно. Изначально нам не нужны были микросервисы и разделение между фронтендом и бэкендом. Независимо от того, разработка это или эксплуатация, требования к навыкам и количеству персонала для микросервисов слишком высоки. Это приложение сосредоточено на разработке, развёртывании и обслуживании монолитных приложений. В настоящее время мы не рассматриваем облачные технологии и микросервисы.
  • Единая ответственность. Контроллер отвечает за упаковку и проверку параметров запроса, возврат результатов запроса и обработки. Сервис фокусируется на бизнес-логике. Это должно повысить вероятность повторного использования кода на уровне сервиса.
  • Плагины. Благодаря естественной функции плагинов Maven, в сочетании с моим пониманием разделения бизнес-функций, реализовано разделение кода бизнес-логики на бэкэнде. Это, я считаю, будет очень полезно для перехода нашего монолитного приложения к микросервисной архитектуре. Кроме того, плагин также полезен для разделения бизнес-функций и обновления и обслуживания функций. Раньше было необходимо заменять весь файл класса целиком, и плагин был очень полезен. Теперь я всё ещё считаю, что плагин может помочь в разделении функций и формировании экосистемы (возможно, это слишком далеко идущие планы).
  • Унифицированный возврат результатов на бэкэнд. Хотя он использует Easyui для отображения страниц, он реализует унифицированный возврат результатов бэкэнда с помощью соответствующих функций Easyui, таких как datagrid, treegrid и combotree... Это необходимый шаг для разделения фронтенда и бэкенда.
  • RESTful. Один и тот же путь, разные методы запроса приводят к разным обработкам.
  • Обработка исключений. Помимо унифицированного возврата результатов, система чётко определяет коды системных исключений и коды исключений. 01xxxxx — код системного исключения, который уже обрабатывается системой.
    // Системное исключение: в одном и том же родительском отделе существует отдел с таким же именем.
    DEPT_REPORT_AT_SAME_PARENT("0100401", "В одном и том же родительском отделе существует отдел с таким же именем."),
    // Системное исключение: целевой отдел не существует. Идентификатор: {}.
    DEPT_NO_EXIST("0100402", "Целевой отдел не существует. Идентификатор: {}."),
    // Системное исключение: отдел [{}] содержит дочерние отделы, которые нельзя удалить.
    DEPT_HAS_CHILDREN("0100403", "Отдел [{}] содержит дочерние отделы, которые нельзя удалить."),
    // Системное исключение: отдел [{}] содержит пользователей, которых нельзя удалить.
    DEPT_HAS_USER("0100404", "Отдел [{}] содержит пользователей, которых нельзя удалить."),
    // Системное исключение: родительский отдел не может быть самим собой
    DEPT_SAME_AS_PARENT("0100405", "Родительский отдел не может быть самим собой")
    ...
  • Всестороннее управление доступом. Пользователи, роли и разрешения могут просматривать отношения между любыми двумя из них.
  • Авторизация ролей. Текущий пользователь может предоставлять ресурсы другим пользователям только те, которыми он владеет. Он не может управлять ресурсами, которыми не владеет.

Архитектура системы

Среда разработки

  • Язык: Java 8
  • Управление зависимостями: Maven 3.6
  • IDE: IDEA с установленным плагином lombok
  • База данных: MySQL 8.0.19. Поскольку используется Mybatis Plus, он совместим с Oracle.

Бэкенд

  • Базовая структура: Spring Boot 2.3.3.RELEASE
  • Постоянная структура: Mybatis Plus 3.3.0
  • Структура безопасности: Spring Security (версия соответствует Spring Boot)
  • Шаблонизатор: Thymeleaf (версия соответствует Spring Boot)
  • Пул соединений с базой данных: druid-spring-boot-starter 1.1.23
  • Инструменты: hutool-all 5.2.1
  • Другое: jQuery, jQuery Easyui, Bootstrap, Bootstrap-duallistbox и т. д.

Фронтенд

  • jQuery
  • jQuery Easyui
  • Bootstrap
  • Bootstrap-duallistbox

Таблица базы данных

Ожидает заполнения.

Принципы разработки

Я стараюсь следовать семи принципам проектирования. Вот моё понимание:

Открывать и закрывать, интерфейс изолировать, комбинировать/агрегировать, заменять Лисков, знать меньше, иметь одну обязанность, зависеть от инверсии.

  1. Принцип открытия и закрытия: открыт для расширения и закрыт для модификации.
  2. Принцип изоляции интерфейса: клиент не должен использовать интерфейсы, которые ему не нужны, классы должны быть построены на минимальном интерфейсе.
  3. Принцип комбинирования/агрегации: при повторном использовании существующих объектов следует отдавать предпочтение комбинированию, а не наследованию.
  4. Принцип замены Лискова: подклассы не должны произвольно нарушать структуру, определённую родительским классом (методы). Подклассы могут использоваться там, где используются родительские классы. Наоборот, это невозможно.
  5. Принцип минимального знания: чем меньше знаний, тем лучше. Инкапсуляция.
  6. Принцип единой ответственности: изменение причины, вызывающей класс, должно быть минимальным (класс делает только одно, метод делает только одну вещь).
  7. Принцип инверсии зависимостей: ориентированное на интерфейс программирование. Зависит от абстракции, а не от конкретного. Матильда: модули и функции | Матильда: модули безопасности | Контроль доступа Spring Security (на основе сессии) | | --- | --- | | Матильда: модули расписания | Управление планированием задач на основе Spring scheduling api | | demo-* | Примеры часто используемых функций | | Матильда: модули сервисов | Общая зависимость для управления связью между модулями. Есть такая идея. | | Матильда: модули генерации кода | Идея создания кода. Основная идея заключается в том, что здесь можно хорошо применить идею объектно-ориентированного программирования. | | Матильда: модули токенов безопасности | Контроль доступа Spring Security на основе токенов | | Матильда: модули Quartz | Управление задачами планирования на основе Quartz |

Демонстрация функций

Интерфейс использует thymeleaf + easyui-super-theme (спасибо автору). Я думаю, этого достаточно. По сравнению с layui, я лично предпочитаю vue, но это уже другая история.

  • Вход: Вход

  • Управление пользователями: Управление пользователями

  • Управление ролями: Управление ролями

  • Контроль доступа: Контроль доступа

  • Авторизация: роли и разрешения: Авторизация: роли и разрешения

  • Авторизация: роли и пользователи: Авторизация: роли и пользователи

  • Отдел управления: Отдел управления

  • Словарь данных: Словарь данных

  • Планирование задач: Планирование задач

  • Документация по интерфейсу: Документация по интерфейсу

  • Системный журнал: Системный журнал

  • Настройка темы: Настройка темы

Наконец

Если вам нравится, пожалуйста, поставьте лайк и подпишитесь. Я знаю, что она не идеальна. Добро пожаловать, чтобы присоединиться ко мне. Спасибо всем. Надеюсь, в будущем Matilda будет становиться всё лучше и лучше, и не забудет своих первоначальных намерений!

Давайте, добро пожаловать в единомышленники! Кроме того, я надеюсь, что вы, уважаемые старшие братья, сможете дать мне больше советов (* ̄︶ ̄).

Свяжитесь со мной:

— QQ группа: 783897511 — QQ: 1060702785 — Блог: https://section2014.github.io/

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

На основе Springboot разработана система управления правами доступа, в которой используются Spring Security и Mybatis Plus. Система разработана с применением плагинов, также используется зависимость от Hutool. В качестве шаблонизатора применяется Thymeleaf. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/section2014-matilda.git
git@api.gitlife.ru:oschina-mirror/section2014-matilda.git
oschina-mirror
section2014-matilda
section2014-matilda
master