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

OSCHINA-MIRROR/stylefeng-Roses-roses-kernel

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

Roses-kernel: проектный каркас, инструмент для разработки

Проект Roses возобновляет поддержку, адрес проекта вернулся к: https://gitee.com/stylefeng/roses


Roses-проектный каркас

Roses — это микросервисная структура на основе Spring Boot 2 и Spring Cloud Finchley.RELEASE, предназначенная для создания более лаконичных распределённых и сервисно-ориентированных решений. Roses обладает высокой эффективностью разработки и предоставляет надёжные решения для обеспечения согласованности данных в распределённых транзакциях, управления сервисами на основе цепочек вызовов, надёжного определения местоположения сервисов (Log + Trace) и т. д.

Распределённая структура требует не только создания эффективной и стабильной базовой структуры разработки, но и решения проблем, связанных с распределением. Следите за микросервисной структурой Roses: https://gitee.com/stylefeng/roses.


Модули проекта

Модуль Описание Порт Примечание
kernel-actuator Мониторинг actuator Нет Нет
kernel-core Основной пакет Нет Автоконфигурация и инструменты
kernel-generator Генератор кода Нет Генерация сущностей, DAO, сервисов и т.д. на основе базы данных
kernel-jwt Модуль JWT Нет Реализация аутентификации JWT
kernel-logger Ведение журнала Нет Инструменты ведения журнала
kernel-model Общая сущность Нет Общие сущности, интерфейсы, перечисления, исключения и т. д.
kernel-scanner Сканер ресурсов Нет Сбор интерфейсов всех сервисов
kernel-sign Модуль подписи Нет Подпись данных
kernel-validator Валидатор Нет Проверка параметров

Примечание

  • Среда разработки: JDK 1.8.
  • Рекомендуется использовать зеркало Alibaba Cloud Maven для загрузки jar-файлов, чтобы обеспечить успешное извлечение.
  • (Важно) Поскольку roses-kernel ещё не был отправлен в центральный репозиторий Maven, для нормальной работы других проектов рекомендуется установить mvn в локальный репозиторий или развернуть его в вашем частном сервере.

Особенности проекта

roses-kernel позиционируется как базовая структура проекта, включающая автоматическую конфигурацию, инструменты упаковки, генераторы кода, проверку JWT и т. д. Стоит отметить, что некоторые зависимости в pom являются предоставленными, и некоторые jar-файлы всё ещё необходимо импортировать в конкретное приложение.

kernel-actuator

При включении spring boot admin необходимо включить модуль kernel-actuator, который содержит базовую конфигурацию spring security. Обратите внимание, что в автоматической конфигурации NoneSecurityAutoConfiguration конфигурация spring security установлена на permitAll(), что позволяет обойти все перехватчики spring security. Если вам нужно включить проверку безопасности, вы можете обратиться к [http://codecentric.github.io/spring-boot-admin/2.0.1/](http://codecentric.github .io/spring-boot-admin/2.0.1/) для изменения соответствующей конфигурации.

kernel-core

Это основной модуль структуры проекта, включающий в себя общие автоматические настройки, такие как автоматическая настройка mybatis-plus, fastjson, redis и веб-приложения. Также есть несколько контекстных инструментов, таких как RequestNoContext, который хранит уникальный номер запроса текущего запроса, DbInitializer, который инициализирует базу данных, и FeignErrorDecoder, FeignInterceptor, DefaultTreeBuildFactory, а также некоторые расширенные инструменты в пакете com.stylefeng.roses.core.util.

kernel-generator

Модуль генератора кода представляет собой простую упаковку генератора кода mybatis-plus. Он может автоматически генерировать сущности, мапперы, сервисы на основе структуры таблицы базы данных. При использовании просто выполните две части генерации следующим образом:

// Инициализация параметров
GenerateParams generateParams = new GenerateParams();
generateParams.setXXX();
generateParams.setXXX();
generateParams.setXXX();
generateParams.setXXX();

// Выполнение генерации кода
SimpleGenerator.doGeneration(generateParams);

Для получения дополнительной информации о параметрах генератора кода см. следующее:

// Автор комментария в коде
private String author = "fengshuonan";

// Выходной каталог кода, может быть относительным путём к проекту
private String outputDirectory = "temp";

// Драйвер JDBC
private String jdbcDriver = "com.mysql.jdbc.Driver";

// Адрес подключения к базе данных
private String jdbcUrl = "jdbc:mysql://127.0.0.1:3306/guns?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC";

// Имя пользователя базы данных
private String jdbcUserName = "root";

// Пароль базы данных
private String jdbcPassword = "root";

// Удалить префикс таблицы
private String[] removeTablePrefix = {"xx_"};

// Таблица для генерации, может быть пустой, по умолчанию генерирует все
private String[] includeTables;

// Родительский пакет класса обслуживания
private String parentPackage = "com.stylefeng.roses.xxx.modular";

// Генерировать ли интерфейс сервиса, зависит от ситуации проекта
private Boolean generatorInterface = false;

kernel-jwt

Модуль JWT инкапсулирует связанные методы операций JWT. Класс JwtTokenUtil содержит методы построения токена, получения информации в токене, проверки токена и проверки срока действия токена. Класс JwtProperties содержит необходимые конфигурации JWT, включая срок действия и закрытый ключ. JwtAutoConfiguration — это автоматическая конфигурация JWT. Если вы включите модуль kernel-jwt, этот модуль также поможет вам автоматически настроить конфигурацию. Обратите внимание, что конфигурация в классе JwtProperties сопоставляется с конфигурацией в файле конфигурации с префиксом jwt. После включения её необходимо заменить, например, в application.yml, следующим образом:

jwt:
  secret: abcdefg
  expiration: 82800

kernel-logger

Модуль logger в основном включает две функции: ведение журнала цепочки вызовов (ChainAop) и запись бизнес-журналов и системных журналов системы (LogUtil). ChainOnConsumerAop, ChainOnControllerAop и ChainOnProviderAop используются для регистрации контроллеров, потребителей и поставщиков. Конкретные зарегистрированные журналы можно найти в этих трёх классах или непосредственно в перечислении RpcPhaseEnum, которое записывает все типы журналов.

G1,     // Запрос шлюза (шлюз перед перехватом)

P1,     // Контроллер получает запрос (controllerAOP)

P2,     // Подготовка к вызову удалённого сервиса (consumerAOP)

P3,     // Удаленный сервис получает запрос (providerAOP)

EP1,    // Ошибка обработки контроллера (controllerAOP)

EP2,    // Feign удалённый вызов, ошибка вызывающей стороны (consumerAOP)

EP3,    // Feign удалённая ошибка вызова, ошибка вызываемой стороны (providerAOP)

G2,     // Успешный ответ шлюза (перехват после шлюза)

EG2,    // Ответ шлюза об ошибке (перехват после шлюза)

TC      // Тип записи времени запроса

Метод использования инструмента ведения журнала LogUtil выглядит следующим образом:

LogUtil.info(String message);

LogUtil.error(String message, Throwable exception);

LogUtil.debug(String message);

LogUtil.trace(String message);

LogUtil.warn(String message);
``` Этот модуль содержит все константы, перечисления, исключения, классы разбивки на страницы, общие модели и т. д., используемые во всём фреймворке. Эти классы необходимы для использования в рамках фреймворка, а также могут быть использованы в бизнес-проектах.

Kernel-model также включает некоторые интерфейсы, такие как AuthService и ResourceService, которые определяют методы аутентификации и сбора ресурсов, а также интерфейс AbstractLoginUser для получения текущего авторизованного пользователя. В Roses-system эти интерфейсы имеют стандартную реализацию. Также есть упаковка запросов и ответов, связанных с разбивкой на страницы, PageQuery и PageResult.

### Kernel-scanner
Этот модуль представляет собой уникальный инструмент сканирования ресурсов Roses. В Roses используется аннотация @ApiResource для пометки интерфейсов в контроллерах. В рамках Roses каждому пользователю соответствует роль, роли соответствуют ресурсы, а меню связано с ресурсами. Сканер ресурсов служит для упрощения управления правами доступа ко всем ресурсам интерфейса и упрощает процесс ввода ресурсов. При запуске программы происходит автоматическое сканирование методов с аннотацией @ApiResource, после чего ресурсы упаковываются и записываются в базу данных. Таким образом, после использования сканера ресурсов можно легко собрать все ресурсы интерфейса сервисов и централизованно управлять ими через интерфейс roses-system.

### Kernel-sign
Этот модуль определяет методы и автоматическую настройку подписи данных. С помощью инструментов, предоставляемых этим модулем, можно реализовать базовую подпись и проверку данных, чтобы предотвратить их кражу и изменение при передаче.

### Kernel-validator
Kernel-validator — это набор лёгких инструментов для проверки параметров. Используя AOP-перехват, вы можете реализовать проверку параметров запроса, просто добавив аннотацию @ParamValidator к методам сервиса. Во время использования достаточно унаследовать параметры от BaseValidatingParam и реализовать метод checkParam(). Метод checkParam() возвращает null, если значение не пустое, и строку с подсказкой, если оно пустое.

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

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

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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