Журнал изменений
Обновление зависимостей
-
обновить Springboot 3.1.5 => 3.1.7
-
обновить Springboot 2.7.17 => 2.7.18 (расширенная служба обновлена до финальной версии boot2)
-
обновить mybatis-boot 3.0.2 => 3.0.3 Оптимизировать передачу зависимостей
-
обновить powerjob 4.3.3 => 4.3.6
-
обновить easyexcel 3.3.2 => 3.3.3
-
обновить передаваемый-поток-локальный 2.14.2 => 2.14.4
-
обновить justauth 1.16.5 => 1.16.6
-
обновить redisson 3.24.1 => 3.24.3 Исправлена проблема с тайм-аутом перезапуска подписки.
-
обновить easy-es 1.1.1 => 2.0.0-beta4
Обновления функций
-
Обновление оптимизирует удаленные вызовы oss для поддержки обработки перехода на более раннюю версию
-
обновление оптимизирует и обогащает операции RedisUtils с типами наборов списков.
-
обновление оптимизирует модуль администратора, добавляя отдельный модуль ограничителя скорости
-
обновление оптимизирует интерфейс кода проверки и добавляет конфигурацию ограничения тока
-
обновление оптимизирует аннотации слияния Excel для определения последующих слияний столбцов на основе результатов первого объединенного столбца (спасибо Simple)
-
обновить оптимизацию кода SocialUtils
-
обновление оптимизирует и удаляет ненужные классы исключений
-
обновление Оптимизация и завершение интернационализации трехсторонней проверки входа в систему
-
обновление оптимизирует компонент SMS для резервирования классов автоматической настройки
-
update обновляет описание базы данных
-
обновление оптимизирует компонент SMS для резервирования классов автоматической настройки
-
обновление Оптимизируйте и измените конфигурацию OSS на глобальный режим, чтобы уменьшить сложность использования и сохранить SQL для облегчения расширения пользователей (обычные проекты не требуют настройки мультитенантности)
-
Обновление оптимизирует и уточняет контроль разрешений управления конфигурацией ОС
-
обновление оптимизирует и включает кэширование сценариев Redisson для уменьшения передачи данных по сети.
-
Обновление оптимизирует и удаляет конфигурацию hikaricp, которая официально не рекомендуется.Протокол jdbc4 имеет метод проверки.
-
оптимизация обновлений снижает ненужную производительность оптимизации запросов PlusSaTokenDao
-
обновление Оптимизация обновления обновления пользователя предлагает использовать учетную запись для входа
-
Обновление оптимизирует использование вошедших в систему пользователей, чтобы определить, стоит ли входить в систему, чтобы повысить эффективность.
-
обновить Оптимизировать и реконструировать LoginHelper для инкапсуляции операций кода локального хранилища.
-
обновление оптимизирует getTenantId, чтобы определить, следует ли включать мультиарендность
-
обновление оптимизирует Dockerfile и использует режим оболочки для поддержки передачи переменных среды в параметры jvm.
-
обновить Оптимизировать закрытие соединения WebSocketUtils и изменить его на предупреждение
-
обновление оптимизирует экспорт нескольких листов Excel (спасибо Мэй)
-
обновление оптимизирует и удаляет ненужные реализации интерфейса
-
обновление оптимизирует настройку параметров jvm и полностью включает zgc
-
Обновление оптимизирует использование динамических арендаторов для восстановления бизнес-логики арендаторов.
-
обновление оптимизирует TenantHelper для поддержки функциональных методов для динамических клиентов.
-
Обновление оптимизирует поддержку многотенантной привязки с одним и тем же трехсторонним входом в систему.
-
обновление оптимизирует метод обновления данных для входа в систему пользователя, чтобы игнорировать разрешения на данные
-
обновление оптимизирует и дополняет поле времени трехсторонней привязки и удаляет ненужные аннотации Excel
-
Обновление оптимизирует извлечение записей входа в прослушиватель для унифицированной обработки.
-
обновление оптимизирует перехват исключений push-сообщений для входа в систему (оно не будет задерживаться, если ресурс не запущен)
-
Обновление оптимизирует метод ignoreTable подключаемого модуля клиента для поддержки динамических клиентов.
новые возможности
-
добавить новый метод набора RedisUtils.setObjectIfExists, если он существует
-
add добавляет расширенные операции RedisUtils для типа набора списков.
-
добавить Новый компонент перевода, реализация перевода псевдонима пользователя
-
добавить Новая функция шифрования ответа поддерживает аннотации для принудительного шифрования данных интерфейса (спасибо MichelleChung)
-
добавить новый модуль ограничения тока с общим ограничителем скорости для настройки ограничения тока бизнеса и не конфликтовать с дозорным
Исправление ошибок
-
fix Исправлена проблема несогласованности аутентификации, вызванная тем, что служба тестированияstream-mq не импортировала модуль клиента.
-
fix: Исправить ошибку, сообщаемую Seata при использовании zgc (восстановить все компоненты Alibaba по неизвестным причинам).
-
исправлено: в образ Sentinel добавлены избыточные параметры интерфейса.
-
fix Устранить проблему, связанную с тем, что переключатель получения интерфейса регистрации находится за пределами области действия клиента.
-
исправить проблему конфликта версий журнала журнала Seata-сервера
-
fix Исправить проблему с ошибкой метода запроса selectDictTypeByType
-
fix: Исправлена проблема, связанная с тем, что некоторые аномальные классы не могут быть загружены и сообщают об ошибках.
-
fix Исправить проблему с escape-символом сценария powerjob sql для других баз данных (спасибо веткам)
-
fix Исправить проблему с нулевым указателем MybatisSystemException
-
исправление: аннотация слияния Excel будет определять последующее слияние столбцов на основе результата первого объединенного столбца.
-
fix: Исправить проблему совместного использования и покрытия сеансов несколькими учетными записями и изменить ее на независимое хранилище tokenSession.
-
fix Исправлена проблема получения нулевого пользователя при входе в систему после истечения срока действия токена.
-
fix: исправлена проблема, из-за которой более поздняя версия nginx в схеме развертывания powerjob не вступает в силу.
-
fix Исправить проблему одновременного создания нескольких экземпляров OssFactory.
-
исправлено: служба очереди задержки аварийно завершает работу до наступления времени доставки сообщения, из-за чего сообщение не принимается после перезапуска
Изменения во внешнем интерфейсе
-
обновление оптимизирует переменную img аватара пользователя без определения проблемы типа
-
Обновление оптимизирует и уточняет контроль разрешений управления конфигурацией ОС
-
обновление оптимизирует явные команды упаковки
-
Предупреждения в коде оптимизации обновления
-
обновление оптимизирует логику выпуска страницы белого списка на интерфейсе
-
Обновить описание страницы оптимизации об идентификаторах разрешений
-
fix Исправить ошибку записи добавления в тело (спасибо Ai3_Liu Xiaolong)
-
исправить кеш компонента не очищается при закрытии вкладки динамической маршрутизации (спасибо NickLuo)
-
исправить удаление повторяющейся переменной среды ElUploadInstance (спасибо Коттону)
-
fix Исправлена проблема с предупреждением консоли, когда онлайн-пользователи принудительно нажимают кнопку для отмены.
-
fix: Исправлена проблема с предупреждением при использовании стиля по умолчанию в словаре.
Введение в платформу
RuoYi-Cloud-Plus
微服务通用权限管理系统
переписывает RuoYi-Cloud для полного обновления (несовместимо с исходной платформой)
Код и документы проекта имеют открытый исходный код, бесплатны и могут использоваться в коммерческих целях. Просто следуйте соглашению об открытом исходном коде и храните файлы соглашения об открытом исходном коде в проекте.
Живите, пока не состаритесь, и пишите, пока не состаритесь. Открытый исходный код для интереса Открытый исходный код для обучения. Открытый исходный код, позволяющий каждому по-настоящему изучить технологию.
Демонстрация системы: https://plus-doc.dromara.org/#/common/demo_system
Адрес внешнего проекта: https://gitee.com/JavaLionLi/plus-ui
Адрес документа: https://plus-doc.dromara.org.
Функциональные различия между этой платформой и RuoYi
Функция | эта структура | Руои |
---|---|---|
Фронтенд-проект | Переписать Vue3 + TS + ElementPlus на основе проекта с открытым исходным кодом vue3-element-admin. |
На основе Vue2/Vue3 + JS. |
Бэкэнд-структура проекта | Структурное разделение в виде плагинов + пакетов расширения для легкого расширения. | Модули встраиваются друг в друга, и расширение связи серьезно затруднено. |
Стиль внутреннего кода | Форматирование кода, строго соответствующее спецификациям Alibaba и унифицированной конфигурации проекта. | Написание кода отличается от обычных структур, что вызывает трудности с чтением. |
Распределенный регистрационный центр | Используя интеграцию исходного кода Alibaba Nacos для облегчения отладки расширений и вторичной среды разработки, к нему были добавлены различные средства мониторинга. | Использовать Alibaba Nacos для создания чисто официальной версии самостоятельно ненадежно. |
Центр распределенной конфигурации | Используя интеграцию исходного кода Alibaba Nacos для облегчения отладки расширений и вторичной среды разработки, к нему были добавлены различные средства мониторинга. | Использовать Alibaba Nacos для создания чисто официальной версии самостоятельно ненадежно. |
сервисный шлюз | Платформа SpringCloud Gateway используется для расширения множества функций , таких как: аутентификация в интрасети, кэширование тела запроса, междоменная конфигурация, журнал ответов на запросы и т. д. |
Использование SpringCloud Gateway имеет одну функцию |
Балансировка нагрузки | Расширение SpringCloud Loadbalancer поддерживает маршрутизацию группы разработчиков, что упрощает разработку и отладку в нескольких командах. | Использование SpringCloud Loadbalancer имеет одну функцию |
Удаленный вызов RPC | Само собой разумеется, что использование нового Apache Dubbo 3.X имеет долгую историю. | При использовании метода имитации письма с ограниченными функциями сеть сильно колеблется и нестабильна. |
Распределенный токоограничивающий предохранитель | Используя интеграцию исходного кода Alibaba Sentinel для облегчения отладки расширений и вторичной среды разработки, он также добавляет различные средства мониторинга. | Использовать Alibaba Sentinel для самостоятельной сборки чисто официальной версии ненадежно. |
Распределенные транзакции | Использование интеграции исходного кода Alibaba Seata для подключения Nacos и различного мониторинга для упрощения процесса создания и развертывания. | Использование Alibaba Seata для самостоятельной сборки чисто официальной версии является громоздким, и Nacos не связан со странными методами использования в коде. |
Веб-контейнер | Использование Undertow, высокопроизводительного контейнера на базе XNIO. | Использование Томката |
Аутентификация полномочий | Использование Sa-Token и Jwt, статическое использование, полноценные функции, низкая связанность и высокая масштабируемость. | Spring Security имеет громоздкую конфигурацию и крайне плохую масштабируемость. |
Аннотация разрешения | Используйте Sa-Token для поддержки проверки входа в систему с помощью аннотаций, проверки роли, проверки разрешений, вторичной проверки подлинности, проверки HttpBasic, проверки игнорирования. Проверка ролей и разрешений поддерживает несколько условий, таких как AND OR или 权限 OR 角色 и другие сложные выражения. |
Поддерживает только наличие совпадения |
Поддержка реляционных баз данных | Встроенная поддержка MySQL, Oracle, PostgreSQL, SQLServer и гетерогенной коммутации может использоваться одновременно. |
Поддерживает MySQL и Oracle. Одновременное использование и гетерогенное переключение не поддерживаются. |
база данных кэша | Поддерживает Redis 5-7 и поддерживает большинство новых функций, таких как распределенное ограничение тока и распределенные очереди. | Поддержка Redis simple get set |
клиент Redis | Принять Redisson Redis официально рекомендует клиентские инструменты на основе Netty. Поддерживает более 90% команд Redis. Базовая оптимизация позволяет избежать многих неправильных использований. Например: ключи преобразуются в сканирование. Поддерживает автономный, дозорный, кластер с одним главным сервером, несколько -мастер-кластер и другие режимы. |
Lettuce + RedisTemplate поддерживает несколько режимов, а инструменты громоздки в использовании. Пул соединений использует общий пул, что часто вызывает проблемы из-за ошибок. |
Кэширование аннотаций | Аннотация Spring-Cache используется для расширения реализации и поддержки большего количества функций , таких как время истечения срока действия, максимальная группа времени простоя, максимальная длина и т. д. Для завершения автоматического кэширования данных необходима только одна аннотация. |
Логику кода Redis необходимо писать вручную. |
ORM-фреймворк | Используя Mybatis-Plus, он основан на объектах, практически не требует написания SQL и полностью поддерживает Java.Существует множество мощных плагинов, таких как многопользовательский плагин, плагин подкачки, плагин оптимистической блокировки, и т. д. |
Для использования Mybatis на основе XML требуется рукописный SQL. |
SQL-мониторинг | Используйте p6spy для вывода полного SQL и выполнения мониторинга времени. | Вывод журнала требует ручного объединения SQL и параметров, а проблемы отладки невозможно быстро просмотреть. |
Пейджинг данных | Для его расширения используется платформа подключаемого модуля подкачки Mybatis-Plus . Объект подкачки на основе объектов поддерживает несколько способов передачи параметров. Он поддерживает интерфейсную мультисортировку и сложную сортировку. |
Использование PageHelper поддерживает только один запрос. Параметры разбивки на страницы можно передавать только из параметра. Доступна только одна функция сортировки. Плохая масштабируемость и плохой опыт. |
разрешение на данные | Используйте плагин Mybatis-Plus для самостоятельного анализа и объединения SQL. Неиндуктивная фильтрация. Просто установите условия аннотации для Mapper. Поддерживает множество настроек и не ограничивается ролями отдела. |
Использование аннотаций + aop для генерации SQL на основе ролей отдела имеет плохую совместимость и не поддерживает другие бизнес-расширения. После генерации SQL его необходимо вручную объединить с конкретным бизнес-SQL. Это не работает для нескольких запросов Mapper. |
Десенсибилизация данных | Использование аннотаций + десенсибилизация Джексона во время сериализации поддерживает различные условия десенсибилизации для разных модулей.Поддерживает несколько стратегий, таких как удостоверения личности, номера мобильных телефонов, адреса, адреса электронной почты, банковские карты и т. д., и может расширяться самостоятельно. |
никто |
Шифрование и дешифрование данных | Используйте аннотации + перехватчик mybatis для автоматического шифрования и дешифрования данных во время доступа к данным. Поддерживает несколько стратегий, таких как BASE64, AES, RSA, SM2, SM4 и т. д. |
никто |
Перевод данных | Используйте аннотации + Джексон для динамического изменения данных для перевода во время сериализации. Поддержка нескольких режимов: 映射翻译 直接翻译 其他扩展条件翻译 пользовательское расширение может быть выполнено в два этапа через интерфейс и встроенные реализации нескольких переводов. |
никто |
Структура нескольких источников данных | Используйте динамический источник данных для поддержки большинства баз данных в мире. Вы можете динамически управлять гетерогенными базами данных разных типов с помощью конфигурации yml. Вы также можете добавлять источники данных через интерфейсную страницу. Поддержка выражений правописания для переключения источников данных из параметров заголовка запроса и другие условия. |
Написание кода для настройки источников данных на основе druid вручную является громоздким и имеет плохую поддержку. |
Транзакции с несколькими источниками данных | Используйте динамический источник данных для поддержки различных типов отката транзакций базы данных из нескольких источников данных. | не поддерживается |
Пул соединений с базой данных | Используя официальный встроенный пул соединений HikariCP Spring, конфигурация проста и известна своей производительностью и стабильностью. | Принять ошибки друида, много поддержки сообщества, низкая активность и низкая конфигурация, множество громоздких конфигураций, средняя производительность. |
Первичный ключ базы данных | Используя Snowflake ID для упорядоченного увеличения уникальных идентификаторов на основе временных меток, вам больше не придется беспокоиться о слиянии конфликтов первичных ключей и дублировании данных в подбазах данных и подтаблицах. | Использует идентификатор автоматического приращения базы данных для поддержки ограниченного объема данных и не поддерживает уникальные первичные ключи из нескольких источников данных. |
Протокол веб-сокета | Протокол WebSocket, инкапсулированный Spring, расширяет возможности аутентификации по токену и синхронизации распределенных сеансов. Это больше не пустая трата времени на базе одной машины. | никто |
Сериализация | Использование официальной встроенной сериализации Jackson Spring надежно!!! | Использование fastjson bugjson широко известно |
Распределенная идемпотентность | См. упрощенную реализацию антигравитационной системы Meituan GTIS (подробности см. в документе). | Написанные вручную аннотации реализованы на основе aop. |
Распределенное планирование задач | Используя PowerJob, он, естественно, поддерживает распределенный и унифицированный центр управления.Нижний уровень основан на JPA и поддерживает несколько баз данных. | При использовании Quartz кластер с низкой производительностью блокировки базы данных требует большого количества настроек и модификаций. |
Центр распределенных журналов | Используйте проверенное в отрасли решение ELK для сбора текущих журналов всех служб в режиме реального времени, чтобы быстро выявлять и локализовать проблемы. | никто |
Распределенная поисковая система | Используйте ElasticSearch, Easy-Es и Mybatis-Plus для работы с ElasticSearch. | никто |
Распределенная очередь сообщений | Использование SpringCloud-Stream для поддержки Kafka, RocketMQ, RabbitMQ | никто |
Функция подбазы данных и подтаблицы | Использование прокси-сервиса Apache Sharding-Proxy без вмешательства для поддержки сегментирования баз данных и таблиц. Вам нужно только написать правила для сегментирования баз данных и таблиц. | никто |
Файловое хранилище | Используя распределенное файловое хранилище Minio, оно по своей сути поддерживает хранение нескольких компьютеров, нескольких жестких дисков, нескольких сегментов и нескольких копий. Оно поддерживает управление разрешениями и является безопасным и надежным. Файлы могут быть зашифрованы для хранения. |
Использование собственных файлов для хранения голых файлов легко потерять и привести к утечке. Он не поддерживает кластеры и имеет эффект одной точки. |
облачное хранилище | 采用 AWS S3 协议客户端 支持 七牛、阿里、腾讯 等一切支持S3协议的厂家 | 不支持 |
短信 | 支持 阿里、腾讯 只需在yml配置好厂家密钥即可使用 接口化支持扩展其他厂家 | 不支持 |
邮件 | 采用 mail-api 通用协议支持大部分邮件厂商 | 不支持 |
接口文档 | 采用 SpringDoc、javadoc 无注解零入侵基于java注释 只需把注释写好 无需再写一大堆的文档注解了 |
采用 Springfox 已停止维护 需要编写大量的注解来支持文档生成 |
校验框架 | 采用 Validation 支持注解与工具类校验 注解支持国际化 | 仅支持注解 且注解不支持国际化 |
Excel框架 | 采用 Alibaba EasyExcel 基于插件化 框架对其增加了很多功能 例如 自动合并相同内容 自动排列布局 字典翻译等 |
基于 POI 手写实现 功能有限 复杂 扩展性差 |
工具类框架 | 采用 Hutool、Lombok 上百种工具覆盖90%的使用需求 基于注解自动生成 get set 等简化框架大量代码 | 手写工具稳定性差易出问题 工具数量有限 代码臃肿需自己手写 get set 等 |
服务监控框架 | 采用 SpringBoot-Admin 基于SpringBoot官方 actuator 探针机制 实时监控服务状态 框架还为其扩展了在线日志查看监控 |
无 |
全方位监控报警 | 采用 Prometheus、Grafana 多样化采集 多模板大屏展示 实时报警监控 提供详细的搭建文档 | 无 |
链路追踪 | 采用 Apache SkyWalking 还在为请求不知道去哪了 到哪出了问题而烦恼吗 用了它即可实时查看请求经过的每一处每一个节点 |
无 |
代码生成器 | 只需设计好表结构 一键生成所有crud代码与页面 降低80%的开发量 把精力都投入到业务设计上 框架为其适配MP、SpringDoc规范化代码 同时支持动态多数据源代码生成 |
代码生成原生结构 只支持单数据源生成 |
部署方式 | 支持 Docker 编排 一键搭建所有环境 让开发人员从此不再为搭建环境而烦恼 | 原生jar部署 其他环境需手动下载安装 自行搭建 |
项目路径修改 | 提供详细的修改方案文档 并为其做了一些改动 非常简单即可修改成自己想要的 | 需要做很多改造 文档说明有限 |
国际化 | 基于请求头动态返回不同语种的文本内容 开发难度低 有对应的工具类 支持大部分注解内容国际化 | 只提供基础功能 其他需自行编写扩展 |
代码单例测试 | 提供单例测试 使用方式编写方法与maven多环境单测插件 | 只提供基础功能 其他需自行编写扩展 |
Demo案例 | 提供框架功能的实际使用案例 单独一个模块提供了很多很全 | 无 |
本框架与RuoYi的业务差异
业务 | 功能说明 | 本框架 | RuoYi |
---|---|---|---|
租户管理 | 系统内租户的管理 如:租户套餐、过期时间、用户数量、企业信息等 | 支持 | 无 |
租户套餐管理 | 系统内租户所能使用的套餐管理 如:套餐内所包含的菜单等 | 支持 | 无 |
用户管理 | 用户的管理配置 如:新增用户、分配用户所属部门、角色、岗位等 | 支持 | 支持 |
部门管理 | 配置系统组织机构(公司、部门、小组) 树结构展现支持数据权限 | 支持 | 支持 |
岗位管理 | 配置系统用户所属担任职务 | 支持 | 支持 |
菜单管理 | 配置系统菜单、操作权限、按钮权限标识等 | 支持 | 支持 |
角色管理 | 角色菜单权限分配、设置角色按机构进行数据范围权限划分 | 支持 | 支持 |
字典管理 | 对系统中经常使用的一些较为固定的数据进行维护 | 支持 | 支持 |
参数管理 | 对系统动态配置常用参数 | 支持 | 支持 |
通知公告 | 系统通知公告信息发布维护 | 支持 | 支持 |
操作日志 | 系统正常操作日志记录和查询 系统异常信息日志记录和查询 | 支持 | 支持 |
登录日志 | 系统登录日志记录查询包含登录异常 | 支持 | 支持 |
文件管理 | 系统文件展示、上传、下载、删除等管理 | 支持 | 无 |
文件配置管理 | 系统文件上传、下载所需要的配置信息动态添加、修改、删除等管理 | 支持 | 无 |
在线用户管理 | 已登录系统的在线用户信息监控与强制踢出操作 | 支持 | 支持 |
定时任务 | 运行报表、任务管理(添加、修改、删除)、日志管理、执行器管理等 | 支持 | 仅支持任务与日志管理 |
代码生成 | 多数据源前后端代码的生成(java、html、xml、sql)支持CRUD下载 | 支持 | 仅支持单数据源 |
系统接口 | 根据业务代码自动生成相关的api接口文档 | 支持 | 支持 |
服务监控 | 监视集群系统CPU、内存、磁盘、堆栈、在线日志、Spring相关配置等 | 支持 | 仅支持单机CPU、内存、磁盘监控 |
缓存监控 | 对系统的缓存信息查询,命令统计等。 | 支持 | 支持 |
在线构建器 | 拖动表单元素生成相应的HTML代码。 | 支持 | 支持 |
使用案例 | 系统的一些功能案例 | 支持 | 不支持 |