构建core模块

news2025/1/19 18:51:34

文章目录

    • 1.环境搭建
        • 1.sunrays-common下新建core模块
        • 2.引入依赖,并设置打包常规配置
    • 2.测试使用
        • 1.启动!
          • 1.创建模块
          • 2.引入依赖
          • 3.application.yml 配置MySQL和Minio
          • 4.创建启动类
          • 5.启动测试
        • 2.common-web-starter
          • 1.目录
          • 2.WebController.java
          • 3.结果
        • 3.common-validation-starter
          • 1.目录
          • 2.Req.java 请求参数,使用JSR303注解
          • 3.ValidationController.java 测试校验参数
          • 4.结果
        • 4.common-test-starter
          • 1.目录
          • 2.TestComponent.java
          • 3.TestClass.java 测试类
          • 4.结果
        • 5.common-mybatis-plus-starter
          • 1.生成CRUD(注意五个必要字段)
          • 2.生成的代码结构
          • 3.测试
        • 6.common-minio-starter
          • 1.测试Controller

1.环境搭建

1.sunrays-common下新建core模块

CleanShot 2024-11-16 at 17.15.50@2x

2.引入依赖,并设置打包常规配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.sunxiansheng</groupId>
        <artifactId>sunrays-common</artifactId>
        <version>1.0</version>
    </parent>

    <version>1.0</version>

    <artifactId>common-core-starter</artifactId>

    <description>本核心模块提供开发的基本工具包</description>

    <dependencies>
        <!-- common-tool-starter -->
        <dependency>
            <groupId>com.sunxiansheng</groupId>
            <artifactId>common-tool-starter</artifactId>
            <version>1.0</version>
        </dependency>
        <!-- common-exception-starter -->
        <dependency>
            <groupId>com.sunxiansheng</groupId>
            <artifactId>common-exception-starter</artifactId>
            <version>1.0</version>
        </dependency>
        <!-- common-log4j2-starter -->
        <dependency>
            <groupId>com.sunxiansheng</groupId>
            <artifactId>common-log4j2-starter</artifactId>
            <version>1.0</version>
        </dependency>
        <!-- common-minio-starter -->
        <dependency>
            <groupId>com.sunxiansheng</groupId>
            <artifactId>common-minio-starter</artifactId>
            <version>1.0</version>
        </dependency>
        <!-- common-mybatis-plus-starter -->
        <dependency>
            <groupId>com.sunxiansheng</groupId>
            <artifactId>common-mybatis-plus-starter</artifactId>
            <version>1.0</version>
        </dependency>
        <!-- common-test-starter -->
        <dependency>
            <groupId>com.sunxiansheng</groupId>
            <artifactId>common-test-starter</artifactId>
            <version>1.0</version>
        </dependency>
        <!-- common-validation-starter -->
        <dependency>
            <groupId>com.sunxiansheng</groupId>
            <artifactId>common-validation-starter</artifactId>
            <version>1.0</version>
        </dependency>
        <!-- common-web-starter -->
        <dependency>
            <groupId>com.sunxiansheng</groupId>
            <artifactId>common-web-starter</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>
</project>

2.测试使用

1.启动!
1.创建模块

CleanShot 2024-11-16 at 17.32.48@2x

2.引入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.sunxiansheng</groupId>
        <artifactId>sunrays-demo</artifactId>
        <version>1.0</version>
    </parent>

    <version>1.0</version>

    <artifactId>common-core-starter-demo</artifactId>

    <dependencies>
        <!-- sunrays-framework 核心模块 -->
        <dependency>
            <groupId>com.sunxiansheng</groupId>
            <artifactId>common-core-starter</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>

</project>
3.application.yml 配置MySQL和Minio
server:
  port: 8080 # 服务端口
spring:
  # 数据源配置
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: guest
    password: guest
    url: guest
    type: com.alibaba.druid.pool.DruidDataSource # druid连接池
    druid:
      initial-size: 10          # 初始化连接数(适当减少以节省资源)
      min-idle: 10              # 最小空闲连接数
      max-active: 50            # 最大连接数(根据业务需求调整)
      max-wait: 30000           # 获取连接的最大等待时间(30秒)
      timeBetweenEvictionRunsMillis: 60000  # 每60秒检查一次空闲连接
      minEvictableIdleTimeMillis: 300000    # 最小空闲时间5分钟后回收
      testWhileIdle: true       # 检查空闲连接是否可用
      testOnBorrow: true        # 检查从连接池获取的连接是否可用
      removeAbandoned: true     # 启用清理超时连接
      removeAbandonedTimeout: 180  # 连接超时时间180秒
      logAbandoned: true        # 记录被清理的连接日志
# minio配置
minio:
  endpoint: http://guest:9000 # minio服务地址
  accessKey: guest # minio服务的accessKey
  secretKey: guest # minio服务的secretKey
4.创建启动类
package com.sunxiansheng.core;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Description: 核心启动类
 *
 * @Author sun
 * @Create 2024/11/16 17:34
 * @Version 1.0
 */
@SpringBootApplication
public class CoreApplication {

    public static void main(String[] args) {
        SpringApplication.run(CoreApplication.class, args);
    }
}
5.启动测试

CleanShot 2024-11-16 at 18.58.41@2x

CleanShot 2024-11-16 at 18.59.02@2x

2.common-web-starter
1.目录

CleanShot 2024-11-16 at 19.00.08@2x

2.WebController.java
package com.sunxiansheng.core.web.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Description: Web控制器
 *
 * @Author sun
 * @Create 2024/11/16 18:58
 * @Version 1.0
 */
@RestController
public class WebController {

    @RequestMapping("/hello")
    public String hello() {
        return "Hello, World!";
    }
}
3.结果

CleanShot 2024-11-16 at 19.00.34@2x

3.common-validation-starter
1.目录

2.Req.java 请求参数,使用JSR303注解
package com.sunxiansheng.core.validation.entity.req;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past;
import java.io.Serializable;
import java.util.Date;

/**
 * Description: 请求参数
 *
 * @Author sun
 * @Create 2024/11/16 19:03
 * @Version 1.0
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Req implements Serializable {

    private static final long serialVersionUID = 1L;

    @NotNull(message = "ID不能为空")
    private Long id;

    @NotBlank(message = "用户名不能为空")
    private String name;

    @NotNull(message = "生日不能为空")
    @Past(message = "生日必须是过去的日期")
    private Date birthday;
}
3.ValidationController.java 测试校验参数
package com.sunxiansheng.core.validation.controller;

import com.sunxiansheng.core.validation.entity.req.Req;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;

/**
 * Description: 控制器
 *
 * @Author sun
 * @Create 2024/11/16 19:04
 * @Version 1.0
 */
@RestController
public class ValidationController {

    /**
     * 参数校验
     *
     * @param req
     * @return
     */
    @RequestMapping("/validation")
    public Boolean validation(@RequestBody @Valid Req req) {
        return true;
    }
}
4.结果

CleanShot 2024-11-16 at 19.22.22@2x

4.common-test-starter
1.目录

CleanShot 2024-11-16 at 19.32.59@2x

2.TestComponent.java
package com.sunxiansheng.core.validation.test;

import org.springframework.stereotype.Component;

/**
 * Description: 测试
 *
 * @Author sun
 * @Create 2024/11/16 19:28
 * @Version 1.0
 */
@Component
public class TestComponent {

    public String test() {
        return "test";
    }
}
3.TestClass.java 测试类
package com.sunxiansheng.test;

import com.sunxiansheng.core.CoreApplication;
import com.sunxiansheng.core.validation.test.TestComponent;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;

/**
 * Description: 测试类
 *
 * @Author sun
 * @Create 2024/11/16 19:24
 * @Version 1.0
 */
@SpringBootTest(classes = CoreApplication.class) // 指定启动类
public class TestClass {

    @Resource
    private TestComponent testComponent;

    @Test
    void test() {
        System.out.println("testComponent.test() = " + testComponent.test());
    }
}
4.结果

CleanShot 2024-11-16 at 19.32.32@2x

5.common-mybatis-plus-starter
1.生成CRUD(注意五个必要字段)

CleanShot 2024-11-16 at 19.37.18@2x

2.生成的代码结构

CleanShot 2024-11-16 at 20.12.34@2x

3.测试

CleanShot 2024-11-16 at 20.14.50@2x

6.common-minio-starter
1.测试Controller
package com.sunxiansheng.core.minio.controller;

import com.sunxiansheng.minio.utils.MinioUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * Minio 测试 Controller
 *
 * @Author sun
 * @Create 2024/11/16
 * @Version 1.0
 */
@RestController
@RequestMapping("/minio")
public class MinioController {

    @Autowired
    private MinioUtil minioUtil;

    /**
     * 检查存储桶是否存在
     */
    @GetMapping("/bucketExists/{bucketName}")
    public boolean bucketExists(@PathVariable String bucketName) {
        return minioUtil.bucketExists(bucketName);
    }

    /**
     * 列出所有存储桶的名字
     */
    @GetMapping("/listBucketNames")
    public List<String> listBucketNames() {
        return minioUtil.listBucketNames();
    }

    /**
     * 根据名字创建存储桶
     */
    @PostMapping("/makeBucket/{bucketName}")
    public String makeBucket(@PathVariable String bucketName) {
        minioUtil.makeBucket(bucketName);
        return "Bucket '" + bucketName + "' created successfully!";
    }

    /**
     * 根据名字移除一个空桶
     */
    @DeleteMapping("/removeBucket/{bucketName}")
    public String removeBucket(@PathVariable String bucketName) {
        minioUtil.removeBucket(bucketName);
        return "Bucket '" + bucketName + "' removed successfully!";
    }

    /**
     * 下载对象到指定位置
     */
    @GetMapping("/downloadObject")
    public String downloadObject(@RequestParam String bucketName,
                                 @RequestParam String objectName,
                                 @RequestParam String fileName) {
        minioUtil.downloadObject(bucketName, objectName, fileName);
        return "Object '" + objectName + "' downloaded successfully to " + fileName;
    }

    /**
     * 文件上传并返回预览url和下载url
     */
    @PostMapping("/upload")
    public List<String> uploadFile(@RequestParam("file") MultipartFile file,
                                   @RequestParam String bucketName) {
        return minioUtil.putObject(file, bucketName);
    }

    /**
     * 删除指定前缀的所有对象(文件或文件夹)
     */
    @DeleteMapping("/removeObjectOrFolder")
    public String removeObjectOrFolder(@RequestParam String bucketName,
                                       @RequestParam String prefix) {
        return minioUtil.removeObjectOrFolder(bucketName, prefix);
    }

    /**
     * 获取下载url
     */
    @GetMapping("/generateDownloadLink")
    public String generateDownloadLink(@RequestParam String bucketName,
                                       @RequestParam String objectName) {
        return minioUtil.generateDownloadLink(bucketName, objectName);
    }

    /**
     * 获取预览url
     */
    @GetMapping("/generatePreviewLink")
    public String generatePreviewLink(@RequestParam String bucketName,
                                      @RequestParam String objectName) {
        return minioUtil.generatePreviewLink(bucketName, objectName);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2279028.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VRTK4 记录抓取错误

左手原本可以正常抓取&#xff0c;但是当右手拿起一个物体时&#xff0c;左手抓取右手的线性驱动器&#xff0c;只有部分区域可以抓取 原因是左手的判定物体的层级错误 应该在Collections下&#xff0c;之前错误的和Collections同一层级&#xff0c;导致抓取有时可以有时不可以…

游戏画质升级史的思考

画质代入感大众玩家对游戏的第一印象与评判标准 大众玩家还没到靠游戏性等内在因素来评判游戏的程度。 画面的重要性&#xff0c;任何时候都不能轻视。 行业就是靠摩尔定律来推动进步的。 NS2机能达到PS4到PS4PRO之间的水准&#xff0c;5050达到8G显存&#xff0c;都会引发连…

Windows11电脑总是一闪一闪的,黑一下亮一些怎么解决

Windows11电脑总是一闪一闪的&#xff0c;黑一下亮一些怎么解决 1. 打开设备管理器2. 点击显示适配器3. 更新下方两个选项的驱动3.1 更新驱动Inter(R) UHD Graphixs3.2 更新驱动NVIDIA GeForce RTX 4060 Laptop GPU 4. 其他文章快来试试吧&#x1f970; 1. 打开设备管理器 在电…

【RAG落地利器】向量数据库Qdrant使用教程

TrustRAG项目地址&#x1f31f;&#xff1a;https://github.com/gomate-community/TrustRAG 可配置的模块化RAG框架 环境依赖 本教程基于docker安装Qdrant数据库&#xff0c;在此之前请先安装docker. Docker - The easiest way to use Qdrant is to run a pre-built Docker i…

【逆境中绽放:万字回顾2024我在挑战中突破自我】

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 一、引言二、个人成长与盘点情感与心理成长学习与技能提升其它荣誉 三、年度创作历程回顾创作内容概…

HTTP / 2

序言 在之前的文章中我们介绍过了 HTTP/1.1 协议&#xff0c;现在再来认识一下迭代版本 2。了解比起 1.1 版本&#xff0c;后面的版本改进在哪里&#xff0c;特点在哪里&#xff1f;话不多说&#xff0c;开始吧⭐️&#xff01; 一、 HTTP / 1.1 存在的问题 很多时候新的版本的…

于灵动的变量变幻间:函数与计算逻辑的浪漫交织(下)

大家好啊&#xff0c;我是小象٩(๑ω๑)۶ 我的博客&#xff1a;Xiao Xiangζั͡ޓއއ 很高兴见到大家&#xff0c;希望能够和大家一起交流学习&#xff0c;共同进步。 这一节我们主要来学习单个函数的声明与定义&#xff0c;static和extern… 这里写目录标题 一、单个函数…

pthread_create函数

函数原型 pthread_create 是 POSIX 线程&#xff08;pthread&#xff09;库中的一个函数&#xff0c;用于在程序中创建一个新线程。 #include <pthread.h>int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *a…

VSCode 的部署

一、VSCode部署 (1)、简介 vsCode 全称 Visual Studio Code&#xff0c;是微软出的一款轻量级代码编辑器&#xff0c;免费、开源而且功能强大。它支持几乎所有主流的程序语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比Diff、版本管理GIT等特性&…

模之屋模型导入到UE5

去模之屋随便下个模型 安装Blender2.8 插件 cats-blender-plugin &#xff0c; 打开blender 2.8转换 pmx转换fbx https://github.com/absolute-quantum/cats-blender-plugin Index of /release/Blender2.80/ 修改单位 修复贴图 更高清了 点fix model 修复模型 改为编辑模式…

用Cursor生成一个企业官网前端页面(生成腾讯、阿里官网静态页面)

用Cursor生成一个企业官网前端页面 第一版&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…

css 实现自定义虚线

需求&#xff1a; ui 画的图是虚线&#xff0c;但是虚线很宽正常的border 参数无法做到 进程&#xff1a; 尝试使用 border&#xff1a;1px dashed 发现使用这个虽然是虚线但是很短密密麻麻的 这并不是我们想要的那就只能换方案 第一个最简单&#xff0c;让ui 画一个图然…

【鸿蒙】0x02-LiteOS-M基于Qemu RISC-V运行

OpenHarmony LiteOS-M基于Qemu RISC-V运行 系列文章目录更新日志OpenHarmony技术架构OH技术架构OH支持系统类型轻量系统&#xff08;mini system&#xff09;小型系统&#xff08;small system&#xff09;标准系统&#xff08;standard system&#xff09; 简介环境准备安装QE…

力扣动态规划-2【算法学习day.96】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;建议灵神的题单和代码随想录&#xff09;和记录自己的学习过程&#xff0c;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关…

细说STM32F407单片机电源低功耗SleepMode模式及应用示例

目录 一、STM32F4的低功耗模式 1、睡眠(Sleep)模式 2、停止(Stop)模式 3、待机(Standby)模式 二、睡眠模式 1、进入睡眠模式 2、睡眠模式的状态 3、退出睡眠模式 4、SysTick的影响 三、应用示例 1、工程配置 &#xff08;1&#xff09; 时钟、DEBUG、GPIO、CodeGen…

【竞技宝】LOL:ning直播再次锐评

北京时间1月18日,目前英雄联盟LPL2025正在如火如荼的进行之中,很多队伍都已经打完了新赛季的首场比赛,其中就包括AL战队,AL在休赛期进行了大幅度的人员调整,整体实力相比之前增强了不少,在16日的比赛中,AL3-0轻松击败LGD拿下了赛季开门红,而AL的打野选手tarzan在本场比赛中表现…

构建安全防线:基于视频AI的煤矿管理系统架构创新成果展示

前言 本文我将介绍一款AI产品的成果展示——“基于视频AI识别技术的煤矿安全生产管理系统”。这款产品是目前我在创业阶段和几位矿业大学的博士共同从架构设计、开发到交付的全过程中首次在博客频道发布, 我之前一直想写但没有机会来整理这套系统的架构, 因此我也特别感谢CSDN平…

QT笔记- Qt6.8.1 Android编程 添加AndroidManifest.xml文件以支持修改权限

1. 切换项目选项卡&#xff0c;找到构建的步骤下的最后一项构建安卓APK&#xff0c;展开后找到应用程序栏&#xff0c;点击安卓自定义中的创建模板. 2. 弹出对话框勾选图中选项后点完成 3. 回到项目&#xff0c;查看.pro文件&#xff0c;里面多了很多内容不管&#xff0c;在下…

STM32-笔记43-低功耗

一、什么是低功耗&#xff1f; 低功耗‌是指通过优化设计和采用特定的技术手段&#xff0c;降低电子设备在运行过程中消耗的能量&#xff0c;从而延长电池寿命、提高性能和减少发热。低功耗设计主要从芯片设计和系统设计两个方面进行&#xff0c;旨在减少所有器件的功率损耗&am…

重温STM32之环境安装

缩写 CMSIS&#xff1a;common microcontroller software interface standard 1&#xff0c;keil mdk安装 链接 Keil Product Downloads 安装好后&#xff0c;开始安装平台软件支持包&#xff08;keil 5后不在默认支持所有的平台软件开发包&#xff0c;需要自行下载&#…