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

OSCHINA-MIRROR/kfyty725-loveqq-framework

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

loveqq-framework, легковесный ioc/aop/javafx фреймворк

loveqq-framework

Легковесный ioc/aop фреймворк с более мощной условной инференцией, чем Spring; абстрагирует MVC модель, предоставляя встроенные серверы reactor-netty и tomcat; Предоставляет фреймворк javafx mvvm, который позволяет реализовать двустороннее связывание модели и данных; поддерживает динамическое конфигурирование источников данных; предоставляет аннотированную кэшировку; Включает аспекты, reactor-netty, tomcat, nacos, feign, mybatis, spring-tx, jsr303-valid, logback, jakarta-mail, quartz, xxl-job, pagehelper, redisson, shiro, thymeleaf, автоматическую конфигурацию источников данных, генератор уникальных идентификаторов Baidu и другие часто используемые компоненты; По умолчанию предоставляет метод упаковки jar-пакетов с минимизацией размера, поддерживающий запуск через jarindex, что обеспечивает более быстрое время запуска; Предоставлен Ruoyi-for-loveqq версия, заменяющая Spring и все его starter'ы, готовая к использованию.

loveqq-core

Проектная основа, включающая некоторые общие утилиты, запуск jar index, инструменты для обобщённых типов, инструменты доступа к базе данных JDBC, инструменты упаковки bean, инструменты чтения пакетов, инструменты преобразования json и интерфейсы автоматической конфигурации, аннотации автоматической конфигурации и т.д. Детали см. в README.md модуля loveqq-core.## loveqq-boot Конкретная реализация контейнера IoC, автоматическая сборка, прокси-сервер области действия (одиночный/прототип/обновление), ленивая загрузка прокси, автоматическое привязывание свойств конфигурационных файлов (поддерживает сложные вложенные типы), условные аннотации, проверка условий JSR, асинхронные события, динамическое проксирование, SPI, пользовательский загрузчик классов jar index и т. д. Детали см. в README.md модуля loveqq-boot.

loveqq-aop

Модуль AOP, поддерживающий совпадение путей Ant, совпадение типов аннотаций, интеграцию поддержки AspectJ для совпадения выражений pointcut. Детали см. в README.md модуля loveqq-aop.

loveqq-boot-starter-datasource

Запускатель источников данных, поддерживающий автоматическую конфигурацию HikariCP, Druid, Tomcat-jdbc, динамическое конфигурирование источников данных. Детали см. в README.md модуля loveqq-boot-starter-datasource.

loveqq-data-korm

Инструменты доступа к базе данных, основанные на прокси, реализующие интерфейсный доступ JDBC, поддерживающие аннотированное написание SQL или динамическое SQL на основе движков шаблонов (например: Enjoy/Freemarker).

loveqq-data-codegen

Генератор кода и шаблоны по умолчанию, поддерживающие шаблоны программирования Java, Enjoy/Freemarker, а также шаблоны JSP (требуется поддержка k-jte) или пользовательские движки шаблонов.## loveqq-mvc-core Основной MVC абстрактный слой, используемый для адаптации к различным веб-серверам, включающий регистрацию маршрутов, привязку параметров, распределение запросов, запросы-фильтры и т.д. Дополнительные сведения см. в README.md модуля loveqq-mvc-core.

loveqq-mvc-servlet

Реализация MVC-паттерна для сервлетов, включает реализацию DispatcherServlet, а также автоматическое конфигурирование Filter и Servlet. Соответствующий запускатель — loveqq-boot-starter-tomcat. Дополнительные сведения см. в README.md модуля loveqq-mvc-servlet.

loveqq-mvc-netty

Реализация MVC-паттерна для Netty, включает реализацию DispatcherHandler и автоматическое конфигурирование пользовательских Filter. Соответствующий запускатель — loveqq-boot-starter-netty. Дополнительные сведения см. в README.md модуля loveqq-mvc-netty.

loveqq-cache-core

Основной абстрактный слой кэширования loveqq, по умолчанию использует кэширование в памяти. Поддерживает аннотации кэширования, унифицированный подход к использованию командного и реактивного стилей кэширования. Дополнительные сведения см. в README.md модуля loveqq-cache-core.

loveqq-cache-redis

Реализация кэширования loveqq на основе Redis

loveqq-boot-cloud-bootstrap

Обязательный модуль для запуска микросервисной архитектуры## loveqq-boot-starter-validator Интеграция jsr303-validation и добавление пользовательских аннотаций ограничений, что позволяет реализовать динамическую проверку согласованности на основе выражений OGNL.## loveqq-boot-starter-discovery-nacos/loveqq-boot-starter-config-nacos Интеграция сервиса открытия и конфигурации Nacos

loveqq-boot-starter-dubbo

Интеграция автоматического конфигурирования Dubbo

loveqq-boot-starter-feign

Интеграция автоматического конфигурирования Feign, совместимое использование с центром регистрации, поддержка loveqq-mvc аннотаций

loveqq-boot-starter-rocketmq

Интеграция автоматического конфигурирования RocketMQ

loveqq-boot-starter-redisson

Интеграция поддержки Redis на основе Redisson, а также встроенная простая реализация MQ на основе Redis

loveqq-sdk

Быстрое создание SDK, требует только написания моделей запросов и ответов, поддерживает фильтры, легко расширяемо, поддерживает командный и реактивный стили.

loveqq-javafx

Фреймворк javafx mvvm, реализующий двустороннее связывание представлений и моделей данных. В коде достаточно оперировать данными, чтобы они отражались в представлении, а изменения данных в представлении отражались в модели. Дополнительные сведения см. в README.md модуля loveqq-javafx.

Ruoyi-for-loveqq

Основанный на фреймворке loveqq монолитный вариант Ruoyi, который удаляет нижележащие зависимости от Spring и его Spring Boot Starter. Подробнее смотрите в списке репозиториев.

Пример

package com.kfyty.demo;
``````markdown
import com.kfyty.loveqq.framework.boot.K;
import com.kfyty.loveqq.framework.boot.validator.annotation.Condition;
import com.kfyty.loveqq.framework.core.autoconfig.annotation.Async;
import com.kfyty.loveqq.framework.core.autoconfig.annotation.SpringBootApplication;
import com.kfyty.loveqq.framework.core.autoconfig.annotation.EventListener;
import com.kfyty.loveqq.framework.core.event.ContextRefreshedEvent;
import com.kfyty.loveqq.framework.data.cache.core.annotation.Cacheable;
import com.kfyty.loveqq.framework.web.core.annotation.GetMapping;
import com.kfyty.loveqq.framework.web.core.autoconfig.annotation.EnableWebMvc;
import lombok.Data;
``````java
@Async
@EnableWebMvc
@EventListener
@SpringBootApplication
public class Main {

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

    @Cacheable
    @GetMapping
    public User hello(@Valid User user) {
        return user;
    }

    @Async
    @EventListener
    public void onStarted(ContextRefreshedEvent event) {
        log.info("start succeeded!");
    }

    @Data
    public static class User {
        @Condition(when = "type == 1", then = "photo != null", message = "type=1时,图片不能为空")
        private Integer type;

        private String photo;
    }
}

Лучшие практики

Maven

Рекомендуется, чтобы проект наследовался от родительского модуля loveqq-framework

<parent>
    <groupId>com.kfyty</groupId>
    <artifactId>loveqq-framework</artifactId>
    <version>1.1.3-M2</version>
</parent>

<dependencies>
    <dependency>
        <groupId>com.kfyty</groupId>
        <artifactId>loveqq-boot</artifactId>
        <version>${loveqq.framework.version}</version>
    </dependency>
    
    <dependency>
        <groupId>com.kfyty</groupId>
       <artifactId>loveqq-boot-starter-logback</artifactId>
        <version>${loveqq.framework.version}</version>
    </dependency>
</dependencies>

При сборке необходимо добавить следующую конфигурацию в подмодуль, чтобы указать запускающий класс и сгенерировать jar index

<properties>
    <boot-start-class>com.kfyty.demo.Main</boot-start-class>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
        </plugin>

Gradle

Необходимо добавить следующие зависимости

apply plugin: 'java'

group = 'com.kfyty.example'
version = '1.0-SNAPSHOT'

ext {
    bootLibOutput = 'boot-lib'
    bootMainClass = 'com.kfyty.loveqq.framework.core.support.BootLauncher'
    bootStartClass = 'com.kfyty.demo.Main'
}
```dependencies {
    implementation 'com.kfyty:loveqq-framework:1.1.3-M2@pom'
    implementation 'com.kfyty:loveqq-boot:1.1.3-M2'
    implementation 'com.kfyty:loveqq-boot-starter-logback:1.1.3-M2'
    implementation 'org.ow2.asm:asm:9.5'
    implementation 'org.javassist:javassist:3.29.0-GA'
    compileOnly "org.projectlombok:lombok:1.18.30"
    annotationProcessor "org.projectlombok:lombok:1.18.30"
}allprojects {
    compileJava {
        options.encoding = "UTF-8"
    }
}

При сборке проекта необходимо добавить следующие конфигурации в подмодули для установки запускаемого класса и создания индекса jar

// Копирование зависимостей
tasks.register('copyDependencies', Copy) {
    from configurations.runtimeClasspath
    into "$buildDir/libs/$rootProject.ext.bootLibOutput"
}

// Создание индекса jar
tasks.register('buildJarIndex', JavaExec) {
    mainClass = 'com.kfyty.loveqq.framework.core.lang.task.BuildJarIndexAntTask'
    classpath = configurations.runtimeClasspath
    args "-OUTPUT_DIRECTORY=$project.buildDir/libs"
    args "-OUTPUT_JAR=$project.name-$project.version.jar"
    args "-OUTPUT_DEFAULT_JAR=$project.name-$project.version.jar"
}

// jar, замена по умолчанию jar
jar {
    dependsOn copyDependencies

    manifest {
        attributes 'Main-Class': "$rootProject.ext.bootMainClass"
        attributes 'Start-Class': "$rootProject.ext.bootStartClass"
        attributes 'Class-Path': configurations.runtimeClasspath.files.collect { "$rootProject.ext.bootLibOutput/$it.name" }.join(' ')
    }
}

// build, замена по умолчанию build
build {
    dependsOn buildJarIndex
}

docker

```dockerfile
FROM docker.m.daocloud.io/openjdk:17

ENV TZ=Asia/Shanghai

WORKDIR /app/demo

EXPOSE 9090

COPY ./target/demo-1.0-SNAPSHOT.jar /app/demo/demo-1.0-SNAPSHOT.jar
COPY ./target/boot-lib /app/demo/boot-lib

ENTRYPOINT ["java", "--add-opens=java.base/sun.reflect.annotation=ALL-UNNAMED", "--add-opens=java.base/java.io=ALL-UNNAMED", "-jar", "demo-1.0-SNAPSHOT.jar"]

# -t устанавливает имя образа:тег
# -f указывает Dockerfile, если он переименован
# . указывает, что Dockerfile находится в текущей директории
# docker build -t demo:1.0 -f Dockerfile .

# -p указывает порты, 9090 (порт контейнера для внешнего доступа) направляется на 8080 (порт контейнера для внутреннего доступа)
# docker run -p 9090:8080 demo:1.0

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

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

Введение

Легковесный ioc/aop-фреймворк с более мощными условиями вывода, чем у Spring; абстрагирует MVC-паттерн и предоставляет встроенные серверы reactor-netty и tomcat; предоставляет фреймворк javafx mvvm для двусторонней привязки модели-данных; поддерживает динамическое конфигурирование источников данных; поддерживает аннотированный кэш; интегрированы... Развернуть Свернуть
GPL-3.0
Отмена

Обновления

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

Участники

все

Язык

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

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