springboot企业级项目常用的pom依赖

这里简单总结下各个组件常用依赖 基于SpringBoot2.2.10.RELEASE 可能因为版本不同有所区别,实际使用时自由发挥

一.数据库相关

1.mysql驱动

        <!--Mysql依赖包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency>

2.mybatis

        <!-- mybatis --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency>

3.druid数据源驱动

        <!-- druid数据源驱动 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.24</version></dependency>

二.SpringBoot相关

1.必备的父依赖

    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.10.RELEASE</version></parent>

2.一般web开发需要

        <!--Spring boot Web容器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

3.单元测试junit

        <!--Spring boot 测试--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>

4.spring-data-jpa

        <!--Spring boot 核心--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency>

5.security安全框架

        <!--Spring boot 安全框架--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>

6.spring boot缓存

        <!-- spring boot 缓存 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency>

7.spring boot集成redis

        <!--Spring boot Redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

8.spring boot集成redis所需的common-pool2

        <!--spring boot 集成redis所需common-pool2--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>2.5.0</version></dependency>

9.springboot集成thymeleaf模板引擎

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

10.springboot websocket

        <!-- Spring boot websocket --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>    

11.AOP

        <!--AOP--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>

相应切面类实现例子:

@Aspect
@Component
public class ServiceLogAspect {public static final Logger log =LoggerFactory.getLogger(ServiceLogAspect.class);/*** AOP通知:* 1. 前置通知:在方法调用之前执行* 2. 后置通知:在方法正常调用之后执行* 3. 环绕通知:在方法调用之前和之后,都分别可以执行的通知* 4. 异常通知:如果在方法调用过程中发生异常,则通知* 5. 最终通知:在方法调用之后执行*//*** 切面表达式:* execution 代表所要执行的表达式主体* 第一处 * 代表方法返回类型 *代表所有类型* 第二处 包名代表aop监控的类所在的包* 第三处 .. 代表该包以及其子包下的所有类方法* 第四处 * 代表类名,*代表所有类* 第五处 *(..) *代表类中的方法名,(..)表示方法中的任何参数** @param joinPoint* @return* @throws Throwable*/@Around("execution(* com.xuxu.service.impl..*.*(..))")public Object recordTimeLog(ProceedingJoinPoint joinPoint) throws Throwable {log.info("====== 开始执行 {}.{} ======",joinPoint.getTarget().getClass(),joinPoint.getSignature().getName());// 记录开始时间long begin = System.currentTimeMillis();// 执行目标 serviceObject result = joinPoint.proceed();// 记录结束时间long end = System.currentTimeMillis();long takeTime = end - begin;if (takeTime > 3000) {log.error("====== 执行结束,耗时:{} 毫秒 ======", takeTime);} else if (takeTime > 2000) {log.warn("====== 执行结束,耗时:{} 毫秒 ======", takeTime);} else {log.info("====== 执行结束,耗时:{} 毫秒 ======", takeTime);}return result;}}

三.常用第三方工具

1.commons

        <!-- apache 工具类 --><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.11</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.4</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-io</artifactId><version>1.3.2</version></dependency>

2.lombok

        <!--lombok插件--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>

3.slf4j日志门面+logback实现

        <!--slf4j日志门面:可以通过适配器让老的日志框架实现对slf4j的支持,也可以在不改动原有日志框架的基础上通过桥接升级为别的日志框架--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.30</version></dependency><!--logback日志--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency>

4.离线IP地址定位库

        <dependency><groupId>org.lionsoul</groupId><artifactId>ip2region</artifactId><version>1.7.2</version></dependency>

5.数据传输对象(DTO)

        <!--mapStruct依赖--><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>${mapstruct.version}</version></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>${mapstruct.version}</version><scope>provided</scope></dependency><dependency><groupId>javax.inject</groupId><artifactId>javax.inject</artifactId><version>1</version></dependency>

6.fastjson

        <!-- fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.70</version></dependency>        

7.java图形验证码

        <!-- Java图形验证码 --><dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</artifactId><version>1.6.2</version></dependency>    

8.解析客户端操作系统,浏览器信息

        <!-- 解析客户端操作系统、浏览器信息 --><dependency><groupId>nl.basjes.parse.useragent</groupId><artifactId>yauaa</artifactId><version>5.23</version></dependency>

9.JWT(token验证)

        <!-- jwt --><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.1</version></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-impl</artifactId><version>0.11.1</version></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-jackson</artifactId><version>0.11.1</version></dependency>

10.定时任务Quartz

        <!-- SpringBoot 整合 Quartz 定时任务 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId><version>2.3.5.RELEASE</version></dependency>

四.辅助类工具

1.swagger-ui接口文档

        <!-- Swagger UI 相关 --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version><exclusions><exclusion><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId></exclusion><exclusion><groupId>io.swagger</groupId><artifactId>swagger-models</artifactId></exclusion></exclusions></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version></dependency><dependency><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId><version>1.5.21</version></dependency><dependency><groupId>io.swagger</groupId><artifactId>swagger-models</artifactId><version>1.5.21</version></dependency>

需要配置config配置文件:

@Configuration
@EnableSwagger2
public class SwaggerConfig {
//    http://localhost:8080/swagger-ui.html     原路径
//    http://localhost:8080/doc.html     原路径// 配置swagger2核心配置 docket@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2)  // 指定api类型为swagger2.apiInfo(apiInfo())                 // 用于定义api文档汇总信息.select().apis(RequestHandlerSelectors.basePackage("com.xuxu.controller"))   // 指定controller包.paths(PathSelectors.any())         // 所有controller.build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("swagger-api")        // 文档页标题.contact(new Contact("xuxu","https://www.xuxu.com","abc@xuxu.com"))        // 联系人信息.description("xuxu提供的api文档")  // 详细信息.version("1.0.1")   // 文档版本号.termsOfServiceUrl("https://www.xuxu.com") // 网站地址.build();}
}

实体类和接口上使用注解的列子:

@ApiModel(value = "用户业务对象",description = "从客户端传入用户信息数据")
@Data
public class UserBO {@ApiModelProperty(value = "用户名",name="username",example = "xuxu",required = true,dataType ="String")private String username;@ApiModelProperty(value = "密码",name="password",example = "12345",required = true)private String password;@ApiModelProperty(value = "确认密码",name="confirmPassword",example = "12345",required = true)private String confirmPassword;
}
@Api(value = "用户接口",tags = {"用于用户注册相关接口"})
@RestController
public class UserController {@Autowiredprivate UserService userService;@ApiOperation(value = "查询用户名是否存在",notes = "查询用户名是否存在",httpMethod = "GET")@GetMapping("/queryUsernameExist/{username}")public IMOOCJSONResult queryUsernameExist(@PathVariable("username") String username){if(StringUtils.isBlank(username)){return IMOOCJSONResult.errorMsg("用户名为空");}boolean result = userService.queryUsernameExist(username);if(result){return IMOOCJSONResult.errorMsg("用户名已存在");}return IMOOCJSONResult.ok();}@ApiOperation(value = "用户注册",notes = "用户注册",httpMethod = "POST")@PostMapping("/register")public IMOOCJSONResult register(@RequestBody UserBO userBO){String username =userBO.getUsername();String password = userBO.getPassword();String comfirmPwd = userBO.getConfirmPassword();if(StringUtils.isBlank(username)||StringUtils.isBlank(password)||StringUtils.isBlank(comfirmPwd)){return IMOOCJSONResult.errorMsg("参数不能为空");}Users user = userService.register(userBO);return IMOOCJSONResult.ok(user);}
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp微信小程序接入airkiss插件进行WIFI配网

本文可参考uniapp小程序插件 一.申请插件 微信公众平台设置页链接&#xff1a;微信公众平台 登录您的小程序微信公众平台&#xff0c;进入设置页&#xff0c;在第三方设置->插件管理->添加插件中申请AiThinkerAirkissforWXMini插件&#xff0c;申请的插件appId为【wx6…

django解决跨域问题

django解决跨域问题 第一步 查看自己的 django 依赖里面有没有 django-cors-headers 包 直接 cmd pin list第二步如果没有 在自己的 pycharm 里面安装 django-cors-headers 包 pip install django-cors-headers第三步检查是否安装成功 查看自己的 django-cors-headers 安…

【51单片机】LCD1602液晶显示屏

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 LCD1602存储结构时序结构 编码 —— 显示字符、数字 LCD1602 LCD1602&#xff08;Liquid Crystal Display&#xff09;液晶显示屏是…

【C++派生类新增对象的初始化顺序】单继承下派生类新增成员对象的初始化顺序

单继承下派生类新增成员对象的初始化顺序 &#xff08;1&#xff09;【意识】派生类新增成员对象也要初始化&#xff0c;千万别忘&#xff01; &#xff08;2&#xff09;派生类构造函数执行顺序 ①调用基类构造函数 ②对派生类的新增成员对象初始化[调用顺序为类中声明顺序] ③…

红外遥控信号解码

红外遥控信号解码 之前就已经做过红外遥控的解码了&#xff0c;但是一直没有做记录&#xff0c;最近的项目又使用到了红外遥控&#xff0c;索性就把他捡起来记录一下&#xff0c;对于信号的解码&#xff0c;我一般的习惯都是先用逻辑分析仪抓取一下信号波形&#xff0c;然后对…

基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络

一、介绍 垃圾识别分类系统。本系统采用Python作为主要编程语言&#xff0c;通过收集了5种常见的垃圾数据集&#xff08;‘塑料’, ‘玻璃’, ‘纸张’, ‘纸板’, ‘金属’&#xff09;&#xff0c;然后基于TensorFlow搭建卷积神经网络算法模型&#xff0c;通过对图像数据集进…

stdin文件流指针

stdin文件流指针&#xff08;FILE *&#xff09;&#xff0c;用于表示标准输入流。它通常与键盘进行交互&#xff0c;也可以通过重定向将其他输入源作为标准输入。

GPU分布式通信技术-PCle、NVLink、NVSwitch深度解析

GPU分布式通信技术-PCle、NVLink、NVSwitch 大模型时代已到来&#xff0c;成为AI核心驱动力。然而&#xff0c;训练大模型却面临巨大挑战&#xff1a;庞大的GPU资源需求和漫长的学习过程。 要实现跨多个 GPU 的模型训练&#xff0c;需要使用分布式通信和 NVLink。此外&#xf…

调用门提权

在我写的2.保护模式&#xff0b;段探测这篇文章中&#xff0c;我们提到了S位对于段描述符的控制&#xff0c;之前我们已经介绍了代码段和数据段&#xff0c;现在我们来把目光转到系统段 在这么多中结构里面&#xff0c;我们今天要介绍的就是编号为12的&#xff0c;32位调用门 结…

文心一言编写小球反弹程序并优化

使用文心一言尝试编写一个小游戏&#xff0c;先完成 1.python中用pygame模块设计出一个显示区域720x540的屏幕&#xff0c;并绘制一个小球&#xff0c;可以完成小球在显示区域内自动随机直线移动&#xff0c;碰到显示区域的便捷并反弹 import pygame import random import sy…

华为开源自研AI框架昇思MindSpore应用案例:人体关键点检测模型Lite-HRNet

如果你对MindSpore感兴趣&#xff0c;可以关注昇思MindSpore社区 一、环境准备 1.进入ModelArts官网 云平台帮助用户快速创建和部署模型&#xff0c;管理全周期AI工作流&#xff0c;选择下面的云平台以开始使用昇思MindSpore&#xff0c;获取安装命令&#xff0c;安装MindSpo…

gitlab和jenkins连接

一&#xff1a;jenkins 配置 安装gitlab插件 生成密钥 id_rsa 要上传到jenkins&#xff0c;id_rsa.pub要上传到gitlab cat /root/.ssh/id_rsa 复制查看的内容 可以看到已经成功创建出来了对于gitlab的认证凭据 二&#xff1a;配置gitlab cat /root/.ssh/id_rsa.pub 复制查…

SpringBoot实现WebSocket

参考链接&#xff1a;https://www.kancloud.cn/king_om/mic_03/2783864 一、环境搭建 1.创建SpringBoot项目&#xff0c;引入相关依赖 <dependencies><!-- Spring Boot核心启动器&#xff0c;引入常用依赖基础 --><dependency><groupId>org.springf…

现代密码学|公钥密码体制 | RSA加密算法及其数学基础

文章目录 公钥密码RSA数学基础欧拉函数欧拉定理模指数运算 RSA加密算法对rsa的攻击 公钥密码 现代密码学&#xff5c;公钥密码体制概述 加密 A用B的公钥加密 B用B的私钥解密 认证 A使用A的私钥加密 B使用A的公钥解密 加密认证 A用A的私钥加密&#xff0c;再用B的公钥加密 B用…

VuePress v2 快速搭建属于自己的个人博客网站

目录 为什么用VuePress&#xff1f; 一、前期准备 Node.js 使用主题快速开发 二、VuePress安装 三、个性化定制 修改配置信息 删除不需要的信息 博客上传 四、部署 使用github快速部署 初始化仓库 本地配置 配置github的ssh密钥 部署 为什么用VuePress&#xff…

【阅读记录-章节1】Build a Large Language Model (From Scratch)

目录 1. Understanding large language models1.1 What is an LLM?补充介绍人工智能、机器学习和深度学习的关系机器学习 vs 深度学习传统机器学习 vs 深度学习&#xff08;以垃圾邮件分类为例&#xff09; 1.2 Applications of LLMs1.3 Stages of building and using LLMs1.4…

平台整合是网络安全成功的关键

如今&#xff0c;组织面临着日益复杂、动态的网络威胁环境&#xff0c;随着恶意行为者采用越来越阴险的技术来破坏环境&#xff0c;攻击的数量和有效性也在不断上升。我们最近的 Cyber​​Ark 身份威胁形势报告&#xff08;2024 年 5 月&#xff09;发现&#xff0c;去年 99% 的…

PlantUML——时序图

PlantUML时序图 背景 时序图&#xff08;Sequence Diagram&#xff09;&#xff0c;又名序列图、循序图&#xff0c;是一种UML交互图&#xff0c;用于描述对象之间发送消息的时间顺序&#xff0c;显示多个对象之间的动态协作。时序图的使用场景非常广泛&#xff0c;几乎各行各…

【MYSQL】分库分表

一、什么是分库分表 分库分表就是指在一个数据库在存储数据过大&#xff0c;或者一个表存储数据过多的情况下&#xff0c;为了提高数据存储的可持续性&#xff0c;查询数据的性能而进行的将单一库或者表分成多个库&#xff0c;表使用。 二、为什么要分库分表 分库分表其实是两…

Spring纯注解开发

在我的另一篇文章中&#xff08;初识Spring-CSDN博客&#xff09;&#xff0c;讲述了Bean&#xff0c;以及通过xml方式定义Bean。接下来将讲解通过注解的方法管理Bean。 我们在创建具体的类的时候&#xff0c;可以直接在类的上面标明“注解”&#xff0c;以此来声明类。 1. 常…