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 | Валидатор | Нет | Проверка параметров |
Примечание
Особенности проекта
roses-kernel позиционируется как базовая структура проекта, включающая автоматическую конфигурацию, инструменты упаковки, генераторы кода, проверку JWT и т. д. Стоит отметить, что некоторые зависимости в pom являются предоставленными, и некоторые jar-файлы всё ещё необходимо импортировать в конкретное приложение.
При включении 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/) для изменения соответствующей конфигурации.
Это основной модуль структуры проекта, включающий в себя общие автоматические настройки, такие как автоматическая настройка mybatis-plus, fastjson, redis и веб-приложения. Также есть несколько контекстных инструментов, таких как RequestNoContext, который хранит уникальный номер запроса текущего запроса, DbInitializer, который инициализирует базу данных, и FeignErrorDecoder, FeignInterceptor, DefaultTreeBuildFactory, а также некоторые расширенные инструменты в пакете com.stylefeng.roses.core.util.
Модуль генератора кода представляет собой простую упаковку генератора кода 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;
Модуль JWT инкапсулирует связанные методы операций JWT. Класс JwtTokenUtil содержит методы построения токена, получения информации в токене, проверки токена и проверки срока действия токена. Класс JwtProperties содержит необходимые конфигурации JWT, включая срок действия и закрытый ключ. JwtAutoConfiguration — это автоматическая конфигурация JWT. Если вы включите модуль kernel-jwt, этот модуль также поможет вам автоматически настроить конфигурацию. Обратите внимание, что конфигурация в классе JwtProperties сопоставляется с конфигурацией в файле конфигурации с префиксом jwt. После включения её необходимо заменить, например, в application.yml, следующим образом:
jwt:
secret: abcdefg
expiration: 82800
Модуль 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 )