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

OSCHINA-MIRROR/leen1993-leenmvc

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 14 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 02:59 b029807

leen_springmvc

介绍

Основан на Spring+SpringMVC+Mybatis, представляет собой распределённую систему быстрой разработки.

  1. Много источников данных: архитектура основана на C3P0 и обеспечивает самоконтроль над несколькими источниками данных. Разработчики могут гибко настраивать и разрабатывать источники данных в соответствии с потребностями проекта для удовлетворения требований распределённых источников данных. Также обеспечивается контроль транзакций для обеспечения атомарности данных.

  2. SQL-генератор: метод запроса к базе данных реализуется через самоинкапсулированный SQL-генератор, который автоматически генерирует и контролирует операторы SQL. Поддерживает запросы Mybatis SQL.

  3. Автоматическое создание интерфейсов: в рамках фреймворка интерфейсы, такие как getList, getAll, getById, kvs, sqlKvs и page, создаются автоматически в классах сущностей, Dao и Service. Можно также настроить автоматическое создание интерфейсов в соответствии с конкретными требованиями проекта.

  4. API-генерация: реализована собственная система генерации API, которая решает проблему невозможности создания соответствующих документов SwaggerUI для HashMap и request.

  5. Безопасность: используется фреймворк безопасности shiro для реализации контроля доступа на уровне ролей и пользователей.

  6. @TopicMapping: реализовано аннотирование @TopicMapping для распределённой обработки большого количества тем. Это позволяет обеспечить слабую связанность между темами.

  7. Оптимизация запросов: традиционная структура управления, сервиса и постоянства была оптимизирована для упрощения операций с базой данных.

  8. Поддержка баз данных: поддерживает базы данных mysql, SQLSERVER, oracle и iotdb (oracle ещё не разработан).

  9. Docker: для развёртывания на основе Docker уже настроена конфигурация для отправки в различные серверы Docker в зависимости от профиля.

Технический выбор

  • Основная структура: spring + springmvc + mybatis.
  • Реляционная база данных: Mysql, SqlServer, oracle.
  • База данных временных рядов: iotDB.
  • Кэш базы данных: redis.
  • Фреймворк безопасности: shiro.
  • Журнал: log-back.
  • Брокер сообщений: EMQ.

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

  1. Клонируйте ветку master и настройте среду.
  2. Используйте начальный скрипт базы данных в проекте для инициализации базы данных.
  3. Измените соединение с базой данных на ваше собственное.
  4. Попробуйте запустить проект.

Использование

  1. В рамках проекта предоставляется только бэкенд-код. Рекомендуется использовать Postman для тестирования. Сначала запросите код подтверждения для входа, а затем используйте его для других запросов.

  2. Для удобства тестирования и разработки в классе Constant установлен параметр dev_mode. Когда dev_mode=true, все проверки разрешений в фреймворке будут отключены. Если вы хотите быстро протестировать фреймворк, установите этот параметр в true. При реальном запуске проекта необходимо установить его в false.

  3. Начальные скрипты базы данных находятся в папке resources/download. Перед официальным тестированием рекомендуется сначала импортировать базу данных, а затем изменить настройки соединения в application.properties.

Простой процесс разработки

Базовый бизнес-код

Создание сущности, соответствующей базе данных. Здесь пользовательская таблица используется в качестве примера. Сущности играют важную роль в этом фреймворке, и многие функции реализуются через аннотации сущностей. Основные аннотации включают:

  • @Dbinfo: описывает связь между сущностью и аннотацией.
  • @PrimaryKey: указывает поле, которое является первичным ключом сущности.
  • @Exist: аннотация класса кода проверки, проверяет, есть ли ссылки на данные записи в других таблицах.
  • @Uniqueness: аннотация класса кода проверки, проверяет уникальность значения поля в базе данных.
  • @Foreign: аннотация класса кода проверки, проверяет наличие значения в базе данных при вставке или обновлении.
  • @FillField: аннотация внешнего ключа, управляет созданием связанных запросов SQL.
package test;

import com.leenmvc.core.annotation.DbInfo;
import com.leenmvc.core.annotation.FillField;
import com.leenmvc.core.annotation.PrimaryKey;
import com.leenmvc.core.annotation.TableField;
import com.leenmvc.core.annotation.validator.Exist;
import com.leenmvc.core.annotation.validator.Uniqueness;
import com.leenmvc.core.annotation.validator.ValueIn;
import com.leenmvc.core.annotation.validator.groups.AddGroup;
import com.leenmvc.core.annotation.validator.groups.UpdateGroup;
import com.leenmvc.core.base.BaseEntity;
import com.leenmvc.core.enums.FillType;
import com.leenmvc.core.security.dao.core.SysRoleUserDao;
import com.leenmvc.core.security.entity.export.SysUserExcel;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.util.Date;
import java.util.Set;

@DbInfo(value = "sys_user", comment = "用户", excelEntity = SysUserExcel.class)
public class SysUser extends BaseEntity {
    
    @PrimaryKey
    @Exist(classes = {SysRoleUserDao.class}, fields = {"userId"})
    private Long id;
    
    /**
     * 用户名
     */
    @Uniqueness(message = "用户名重复,请换一个用户名", groups = {AddGroup.class, UpdateGroup.class})
    @NotBlank(message = "用户名不能为空", groups = {AddGroup.class})
    @Pattern(regexp = "^[a-zA-Z0-9]{4,16}$", message = "用户名只能是数字或字母", groups ={AddGroup.class,UpdateGroup.class} )
    private String username;
    
    /**
     * 部门名称
     */
    @TableField(false)
    @FillField(entity = SysDept.class, outField = "name", inField = "deptId")
    private String deptName;
    
    @TableField(false)
    @FillField(type = FillType.ONE_TO_ONE, entity = SysDept.class, inField = "deptId")
    private SysDept dept;
    
    /*****/
    // get、set方法
    /*****/
}

Создайте файл Dao, соответствующий сущности.

        package com.leenmvc.core.security.dao.core;
        
        import com.leenmvc.core.base.BaseBusinessDao;
        import com.leenmvc.core.security.entity.core.SysUserToken;
        import org.springframework.stereotype.Repository;
        /**
        * Dao层文件大多数情况下就是继承BaseBusinessDao<实体名>的一个
        空文件
        * 当存在特别频繁使用并且有一些逻辑处理的时候可以在类体内创建相关的方法
        * 
        */
        @Repository
        public class SysUserDao extends
``` **BaseBusinessDao<SysUser>**

Здесь представлен класс BaseBusinessDao с универсальным типом SysUser. Однако без дополнительного контекста сложно понять, что именно делает этот класс и как он используется.

**Создание с сущностью соответствующего Service-файла**

В этом фрагменте кода описывается создание файла с классом SysUserService, который расширяет базовый класс BaseService и реализует бизнес-логику для работы с пользователями. Класс содержит методы для выполнения различных операций с данными пользователей, таких как вход в систему, выход из системы и т. д.

**@TransactionMulti** — это аннотация, которая используется для управления транзакциями в распределённых системах. Она позволяет выполнять несколько операций как одну транзакцию, чтобы обеспечить целостность данных.

**Создание соответствующего Controller-файла**

Этот фрагмент описывает создание контроллера SysUserController, который обрабатывает запросы к данным пользователей. Контроллер содержит методы для получения списка пользователей и тестирования производительности системы.

**@Note** — это аннотация, используемая для документирования методов контроллера. Она помогает описать назначение каждого метода и его параметры.

**Написание тестового кода**

Здесь описывается процесс написания тестов для проверки функциональности системы. Тесты выполняются путём отправки запросов к контроллеру через браузер. В результате тестов проверяется корректность работы методов контроллера и их способность возвращать ожидаемые данные.

Также упоминается о наличии других методов в контроллере, которые могут быть использованы для получения данных пользователей. ### system/sysUser (post запрос, увеличение записи)

system/sysUser (put запрос, модификация записи)  

system/sysUser (delete запрос, удаление записи) 

### Регулярное тестирование
1. Сначала нужно установить для dev_mode в классе Constant.java значение false.

// Режим разработчика, все права доступа недействительны public final static boolean dev_mode = false;

2. Запрос интерфейса проверки кода (конкретные параметры можно найти в исходном коде).

http://localhost:80/captcha?uuid=2123

3. Запрос интерфейса входа пользователя (конкретные параметры также можно посмотреть в исходном коде). 

http://localhost:80/loginUser

## Участие и вклад
1. Форкните проект на Gitee или Github в свой собственный репозиторий.  

2. Клонируйте форкнутый проект, то есть ваш проект, на свой локальный компьютер.  

3. Измените код (не забудьте изменить ветку v1-dev).  

4. После commit отправьте изменения в свою библиотеку (ветка v1-dev).   

5. Войдите в Gitee или Github. На главной странице вы увидите кнопку pull request. Нажмите её, заполните некоторую информацию и отправьте запрос.  

6. Ожидайте, пока сопровождающий объединит изменения.

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/leen1993-leenmvc.git
git@api.gitlife.ru:oschina-mirror/leen1993-leenmvc.git
oschina-mirror
leen1993-leenmvc
leen1993-leenmvc
master