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

OSCHINA-MIRROR/xiandafu-springboot-plus

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

springboot-plus

Информационная система управления административной панели на основе SpringBoot 2, включающая десятки коммерческих приложений. Она предлагает такие возможности как управление пользователями, организационной структурой, ролями, функциональными точками, меню, распределением прав доступа, данными прав доступа, генерацией кода и прочее.

По сравнению с другими открытыми системами управления административной панели, SpringBoot-Plus проста в использовании и позволяет легко создавать средние и крупные системы. При этом использует относительно простую технологическую стопку.

Как определить подходящий открытый платформенный проект для себя:

  • Нужно понимать три различных способа построения платформенного проекта: монолитная система, разделение системы и микросервисы. Plus поддерживает монолитные системы и разделение систем, но не микросервисы. В большинстве случаев, адаптированные монолитные системы и разделенные системы лучше всего подходят для управления системами.
  • Вы должны знать, нужна ли вам технологическая стопка или полноценная платформа. Технологическая стопка — это просто набор технологий, тогда как полноценная платформа должна иметь определённые сложные базовые бизнес-функции.
  • Оценивайте модель управления правами доступа. Поддерживается функциональное управление правами доступа и управление данными прав доступа. Plus имеет мощное управление функциональными правами доступа и управлением данными прав доступа, которое можно расширять до n типов данных прав доступа.
  • Убедитесь, что пользователи могут принадлежать к нескольким отделам. Это очень распространено.
  • Проверьте, поддерживает ли система централизованное управление словарями данных. Централизованное управление словарями данных очень распространено, поэтому платформа должна предоставлять данные и поддержку для фронтенда. Puls система поддерживает это.
  • Обеспечьте возможность предварительного просмотра сгенерированного кода. Предварительный просмотр позволяет модифицировать уже сгенерированный код перед его применением.

Платформа Plus является простой в разработке и развёртывании, но имеет сложные бизнес-функции. Она используется более чем сотней коммерческих компаний и сочетает в себе образовательные и практические аспекты.

Система основана на технологии Spring Boot 2.5, а фронтенд использует Layui 2.4. База данных может использовать MySQL, Oracle, Postgres или SQL Server, теоретически поддерживаются все платформы баз данных.

Основная технологическая стопка была взята из книги автора "Spring Boot 2 Essentials" (каждая глава этой книги также содержит различные примеры, но Springboot-plus больше ориентирована на практическое использование, а не на обучение).

Электронная версия второй части этой книги доступна для покупки здесь, она включает в себя базовый уровень, распределённый уровень и микросервисный уровень, а также описание системы Plus.

Моя новая книга "Оптимизация производительности Java систем", которая доступна для покупки на JD здесь, или её электронная версия здесь. Если вы не уверены, стоит ли читать эту книгу, ответьте на следующие вопросы:

// 1) В следующих 7 строках кода есть 9 мест для оптимизации производительности. Можно найти 5 таких мест?
public String buildProvince(List<Org> orgs){
  StringBuilder sb = new StringBuilder();
  for(Org org : orgs){
    if(sb.length() != 0){
      sb.append(",");
    }
    sb.append(org.getProvinceId());
  }
  return sb.toString();
}

// 2) Будут ли следующие изменения привести к ошибкам компиляции или выполнения? (Множественный выбор)

a) Я могу удалить строки `System.out.println("start");` где угодно.
b) Я могу удалить строки `log.info("start");` где угодно.
c) Я могу изменить сигнатуру метода `update(String id, Object o)` на `update(Object id, Object o);`

Текущая версия: 2.0.0, отличается значительно от версии 1.3.x.

Группа для технического общения: 252010126

Бесплатное видео-представление: https://pan.baidu.com/s/1dFPoaT7

doc/readme/user.png doc/readme/user.png doc/readme/user.png doc/readme/user.png doc/readme/user.png doc/readme/user.png doc/readme/user.png doc/readme/user.png

1 Инструкция по использованию

1.1 Инструкция по установке

Рекомендуется не изменять другие конфигурационные параметры до полного знакомства с системой Plus.

Система основана на Spring Boot 2, поэтому обязательно используйте JDK 8 и откройте компиляционные параметры parameters. Также рекомендуется перекомпилировать проект, если вы не используете параметры Java 8.

Получите код с Git, импортируйте Maven проект через IDE. Проект состоит из двух подпроектов:

  • admin-core — основной пакет, содержащий кэши, права доступа, общие JS и HTML страницы.
  • admin-console — пакет управления системой, содержащий функции управления пользователями, организационной структурой, ролями, правами доступа, данными прав доступа и генерацией кода.

Класс запуска системы — com.ibeetl.admin.ConsoleApplication, находится в пакете admin-console. Для запуска системы необходимо инициализировать базу данных, скрипт для этого находится в doc/starter-mysql.sql. На данный момент предоставлены скрипты для MySQL, Oracle и PostgreSQL, теоретически поддерживаются все базы данных.

Необходимо также изменить конфигурационный файл application.properties, указав адрес вашей базы данных и имя пользователя.

spring.datasource.baseDataSource.url=jdbc:mysql://127.0.0.1:3306/starter?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false&useInformationSchema=true
spring.datasource.baseDataSource.username=root
spring.datasource.baseDataSource.password=123456
spring.datasource.baseDataSource.driver-class-name=com.mysql.cj.jdbc.Driver

Запустите ConsoleApplication, затем перейдите по адресу http://127.0.0.1:8080/, используя логин admin/123456 для входа в систему.Если после успешного запуска возникают ошибки, связанные с переменной userId, то это значит, что параметры параметры не были активированы. После активации параметров необходимо очистить и перекомпилировать весь проект.

Сканируйте QR-код WeChat для получения доступа к видео по установке и созданию подсистем (прибл. 25 минут).

doc/readme/user.png

1.2 Создание подсистем

SpringBoot-plus представляет собой архитектуру, предназначенную для создания больших систем из маленьких подсистем или микросервисов. Поэтому, если вы хотите создать свою собственную бизнес-систему, например CMS-подсистему, рекомендуется не добавлять код непосредственно в SpringBoot-Plus, а создать новый Maven проект, который будет зависеть от admin-core или admin-console (если требуется управление системой).

Для создания подсистемы можно воспользоваться функцией "Подсистемы" > "Создание подсистем". Введите путь Maven проекта и название пакета, чтобы сгенерировать полностью рабочую подсистему на основе SpringBoot-Plus. Все коды можно писать в одном проекте, запустив MainApplication.

@SpringBootApplication
@EnableCaching
@ComponentScan(basePackages = {"com.corp.xxx", "com.ibeetl.admin"})
public class MainApplication extends SpringBootServletInitializer implements WebApplicationInitializer {

    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }
}

Подсистема включает в себя admin-core и admin-console, поэтому вы можете использовать все функции, предоставляемые этими пакетами. Подсистема может быть запущена и обслужена самостоятельно или интегрирована в Nginx для создания большой корпоративной системы.

1.2.1 Конфигурация подсистемы

Подсистема не требует никакой конфигурации для запуска в IDE. Если вы хотите запустить её в виде jar файла, вам потребуется добавить следующий плагин Maven:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

Если вы хотите собрать подсистему в war файл для запуска на Tomcat, вам потребуется изменить тип сборки Maven на war.

<packaging>war</packaging>

1.2.2 Меню системы

Система по умолчанию предоставляет три типа меню:

  • Меню уровня системы, которое появляется в верхней части страницы и представляет собой подсистему.
  • Навигационное меню, которое появляется в левой части страницы и открывает все подменю.
  • Меню, которое открывается и направляет пользователя на страницу. Меню должно быть связано с функциональной точкой.

Рекомендуется создавать новые подсистемы для новых функций.

SpringPlus-Boot не организует всю систему через меню или кнопки, а через функциональные точки. Чтобы сделать меню действующим, вам нужно сначала создать функциональную точку, которая имеет адрес для доступа, и затем связать это меню с функциональной точкой.

Хорошей практикой в SpringBoot-Plus является создание функциональных точек первым делом. Функциональные точки организуются в дерево, представляющее функции, которые система должна предлагать. Когда вы видите код, вы заметите, что функциональные точки связаны с меню, правами доступа и данными прав доступа.

1.2.3 Добавление кода

Вы можете обратиться к разделу "1.3 Генерация бизнес-кода" для получения информации о том, как добавить код. Генерация бизнес-кода создаёт 14 файлов, включая код для фронтенда и бэкенда, и позволяет получить представление о стандартах написания кода.

doc/readme/user.png

Функция генерации кода предназначена для создания кода на основе таблицы, включая JS, JAVA, SQL и HTML. Код можно предварительно просмотреть перед его генерацией. Перед тем как сгенерировать код на локальном компьютере, некоторые параметры следует изменить, чтобы они отображались на русском языке.

  • Отображаемое поле: когда этот объект отображается где-либо, он должен представлять сам объект, например, имя пользователя или название организации.
  • Переменная: можно выбрать короткое имя, которое будет использоваться для переменных в коде на фронтенде и бэкенде.
  • urlBase: базовый URL для вашего подсистемы, который будет объединён с именем переменной.
  • system: имя директории, где хранятся SQL-скрипты.

Другие параметры, которые можно изменить:

  • Включение экспорта и импорта: если выбрано, будут созданы коды для экспорта и импорта. Шаблоны экспорта и импорта следует взять за основу существующих функций (например, словарь данных).
  • Включение управления файлами: если выбрано, бизнес-объекты смогут быть связаны со списком файлов, например, клиент с группой файлов или заявка с группой файлов.
  • Отображаемое имя поля: это имя будет использоваться для отображения списка и формы на фронтенде, поэтому следует ввести русское имя.
  • Поиск: можно выбрать несколько условий поиска, система автоматически создаст конфигурацию поиска.Если поле связано с данными словаря, то следует установить словарь данных, чтобы сгенерированное окно стало выпадающим списком.

1.3.1 Фронтенд-код

Фронтенд-код использует JS-фреймворк layui, который работает с динамической загрузкой модулей. Документация доступна по адресу http://www.layui.com/doc/base/infrastructure.html.

  • index.js: Входной JavaScript файла системы, содержащий запросы и таблицы.
  • add.js: Все JavaScript файлы для добавления новых записей.
  • edit.js: Все JavaScript файлы для редактирования записей.
  • del.js: Все JavaScript файлы для удаления записей.

Основные JavaScript файлы:

  • Common.js: Обертка общих методов JavaScript, таких как jQuery POST, методы окон layui.
  • Lib.js: Обертка бизнес-методов, таких как submitForm, loadOrgPanel и т.д.

1.3.2 HTML-код

Страницы используют layui, документация доступна по адресу http://www.layui.com/demo/.

Шаблонизатор использует Beetl, документация доступна по адресу ibeetl.com.

  • index.html: Главная страница функционала.
  • add.html: Страница добавления новой записи.
  • edit.html: Страница редактирования записи.> Преимуществом использования layui является наличие встроенных компонентов и управления JavaScript, что позволяет выполнять большую часть бизнес-требований.

Основные UI-компоненты:

  • orgInput.tag.html: Поле ввода организации.
  • simpleDictSelect.tag.html: Выпадающий список словаря.
  • simpleDataSelect.tag: Выпадающий список с ключ-значением.
  • searchForm.tag.html: Универсальная форма поиска.
  • submitButtons.tag.html: Кнопки отправки.
  • accessButton.tag.html: Обычная кнопка (с правами доступа).
  • attachment.tag.html: Компонент управления приложениями.
  • ...

2 Односоставная система, её разделение и микросервисы

Plus — это платформа быстрого создания односоставных систем, которая также может быть адаптирована для работы с микросервисами (ранее был выпущен один выпуск, но было решено сосредоточиться на ядре системы вместо простого накопления функций). Вот различия между односоставной системой, малыми системами и микросервисами.

Односоставная система — это распространённый способ проектирования систем, который доминировал за последние десятилетия. Все функции такой системы находятся в одном проекте, собранном в виде war-пакета, который затем развёртывается. Такие системы имеют следующие очевидные преимущества:

  • Разработка односоставной системы проста; мы начинали программировать именно такие системы. Разработчики могут сконцентрироваться на текущем проекте.
  • Легко менять; любое изменение любой функции легко сделать, просто изменяя код одного проекта.
  • Простота тестирования; тестирование односоставной системы не требует учёта других систем, что избавляет от необходимости обращаться к различным REST, MQ вызовам, которые будут рассмотрены позже.
  • Легкость развёртки: нет необходимости учитывать взаимодействие с другими системами, достаточно собрать war-пакет и развёрнуть его на сервере Web.
  • Легкость масштабирования производительности: можно использовать Nginx для развёртки одной программы на нескольких серверах.

С развитием бизнеса и рефакторингом, количество односоставных систем увеличивается. При создании большой односоставной системы возникают следующие недостатки:

  • Большая односоставная система становится всё более сложной для понимания, даже мелкие изменения затрагивают множество аспектов, что замедляет работу команды разработчиков. Кроме того, запуск большой односоставной системы может занять до трёх минут или больше.
  • Несколько функций разрабатываются в рамках одной односоставной системы, что приводит к усложнению процесса тестирования. Например, тестирование должно планироваться заранее и выполняться последовательно.
  • Обновление технологий в односоставной системе очень дорогостоящее. Если система состоит из нескольких меньших систем, можно начать с одного из них. Большую односоставную систему практически невозможно обновить.
  • Все функции односоставной системы работают внутри одного JVM, поэтому они влияют друг на друга. Например, функция подсчёта количества страниц в загружаемых Word-документах потребляет много CPU, что может временно парализовать всю систему, вызывая "ложное" зависание.

Поэтому все больше архитекторов при проектировании систем учитывают возможность их разделения на несколько односоставных малых систем или даже микросервисов. Для традиционных корпоративных приложений лучше подходят малые системы, а для интернет-систем — микросервисы. Это объясняется тем, что:

  • Традиционные IT-системы обычно используют одну базу данных, тогда как микросервисы предлагают использовать отдельную базу данных для каждого сервиса.
  • Традиционные IT-системы редко нуждаются в вызовах других модулей. Они связывают подсистемы через рабочие процессы. В то время как электронная коммерция использует RPC и другие легковесные протоколы для взаимодействия. Корпоративные IT-системы могут использовать SOA, JMS и другие тяжеловесные протоколы для взаимодействия с другими системами.
  • Микросервисы требуют высокого уровня инфраструктурных возможностей, таких как управление микросервисами, эластичность и т.д., что возможно только для электронной коммерции. Хотя традиционные IT-системы могут иметь большие бюджеты, им пока недоступны такие возможности.

Поэтому для большинства традиционных IT-приложений разделение односоставной системы на несколько малых систем технически безопасно и может быть немедленно реализовано. Вот пример физической архитектуры после разделения односоставной системы:

Для пользователя доступ к различным функциям осуществляется через различные подсистемы, каждая из которых предоставляет свои услуги.

Plus поддерживает работу с несколькими базами данных.

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

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

Введение

Это первая в стране открытая система управления бэкендом на основе Spring Boot 2. Она ориентирована на основные функции, предлагает надёжную основу и поддерживает несколько баз данных. Система проста в установке и модификации. Развернуть Свернуть
BSD-3-Clause
Отмена

Обновления

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

Участники

все

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

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