SpringBoot
文章平均质量分 72
渝州居士
这个作者很懒,什么都没留下…
展开
-
SpringBoot、SpringCloud、SpringCloud Alibaba版本对应关系
随着SpringBoot和SpringCloud的发展,有些服务进入停更运维状态,一些新的框架出现,在开发微服务的时候不同组件的版本对应关系也是不可忽视的问题,如果版本不对应,可能会出现很多莫名的错误,给开发带来一些不必要的麻烦,进而也会影响项目的开发进度,本文就此对微服务开发常用的三大组件SpringBoot、SpringCloud、SpringCloud Alibaba版本对应关系进行整理。原创 2024-07-17 10:58:09 · 316 阅读 · 0 评论 -
SpringBoot2.7集成Swagger3.0和knife4j实现API接口文档开发
Swagger 3 是一个用于描述、构建和测试 RESTful Web 服务的开源工具集。它提供了一种简单而强大的方式来定义和文档化 API 接口,同时还具备自动生成客户端代码和服务器存根代码的功能。Knife4j是一个集Swagger2 和 OpenAPI3为一体的增强解决方案,其前身是swagger-bootstrap-ui。原创 2023-07-29 10:16:41 · 2647 阅读 · 3 评论 -
SpringBoot集成Mybatis-Plus实现多租户动态数据源
多租户主要的就是租户之间的数据是相互隔离的,每个租户拥有自己独立的数据,相互之间不干扰。每个租户拥有自己单独的数据库,从物理上隔离了自己的数据,安全性最高,但是成本比较高,容易浪费数据库资源每个租户的数据都在同一个数据库里,每个租户拥有一个独立的表,同样也实现了数据的隔离,安全性和成本其次租户使用同一个数据库和同一张表,在每张表里添加进一个字段,例如tenant来区分每个租户的数据,安全性和成本都比较低,维护性也较高,单表的数据量也比较大,给查询和数据迁移都来带了麻烦。原创 2023-04-13 22:00:00 · 3346 阅读 · 4 评论 -
SpringBoot整合dynamic-datasource实现动态切换多数据源
dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器,具有支持 数据源分组、自定义注解、自定义数据源来源等特性原创 2022-04-28 07:18:17 · 1273 阅读 · 0 评论 -
SpringBoot集成AbstractRoutingDataSource实现动态切换多数据源
spring-jdbc模块提供了AbstractRoutingDataSource抽象类,其内部可以包含多个DataSource,只需要实现其抽象方法,在运行时就可以动态访问指定的数据库。原创 2022-04-27 07:12:41 · 2025 阅读 · 1 评论 -
SpringBoot整合MyBatis和Druid实现多数据源
在实际开发中,经常会遇到一个应用中可能需要访问多个数据库的情况,典型的使用场景如下:业务复杂,数据量大,需要使用多个数据库;读写分离,提升系统性能原创 2022-04-27 07:10:04 · 1452 阅读 · 0 评论 -
SpringBoot整合Keycloak实现单点登录
Keycloak是一个开源的身份和权限访问管理工具,轻松为应用程序和安全服务添加身份验证,无需处理储存用户或者验证用户,其提供用户联合、强健的身份验证、用户管理和细粒度授权等功能。搭建Keycloak服务器本文使用docker compose安装keycloak,因为keycloak依赖数据库,在安装keycloak之前需要先安装数据库,本文使用mysql,具体的compose配置如下:version: '3.7'services: mysql: container_name: my原创 2022-03-20 13:50:01 · 6975 阅读 · 0 评论 -
SpringBoot整合Spring Boot Admin实现服务监控
Spring Boot Admin用于管理和监控一个或多个Spring Boot服务,其分为Server端和Client端,Server端相当于一个注册中心,Client端通过Http请求向Server端进行注册,也可以结合Eureka、Nacos等注册中心实现服务注册原创 2022-03-17 22:00:00 · 4533 阅读 · 0 评论 -
SpringBoot2.3整合Mockito实现单元测试
1. 概述Mockito是一个用于Java单元测试的优秀强大的框架,当需要调用第三方接口而开发测试环境又无法直接调用此接口时,就可以使用Mockito模拟接口调用编写完美的单元测试,这样也使得与第三方应用进行了强解耦2. 引入Mockito依赖由于SpringBoot自身整合了Mockito,所以在整合Mockito编写单元测试的时候,只需要引入test依赖即可<dependency> <groupId>org.springframework.boot</gro原创 2022-01-05 20:09:44 · 4835 阅读 · 1 评论 -
SpringBoot2.3整合CAS5.3实现单点登录
1. 概述CAS(Central Authentication Service)中央认证服务,一种独立开放指令协议,CAS是耶鲁大学发起的一个开源项目,旨在为Web应用系统提供一种可靠的单点登录方法。特点如下:开源的企业级单点登录解决方案CAS Server为需要独立部署的Web应用CAS Client支持非常多的客户端(单点登录系统中各个Web应用)CAS属于Apache2.0许可证,允许代码修改,再发布CAS主要包括两部分,CAS Server和CAS Client,CAS Serve原创 2021-12-10 19:00:00 · 967 阅读 · 0 评论 -
SpringBoot2.3整合WebService实现远程调用
概述最近接手了一个老项目,项目中用到了WebService技术,WebService试一种传统的SOA技术架构,它不依赖于任何编程语言,也不依赖于任何技术平台,可以直接基于HTTP协议实现网络应用之间的数据交互。WebService组成架构采用传统的"C/S"模型,如果某个平台需要对外暴露操作接口,这个时候就可以直接通过WSDL(Web Services Description Language)Web服务描述语言对要公布的接口进行描述。WebService服务端是以远程接口为主的,在Java实现的W.原创 2021-12-07 09:45:17 · 1714 阅读 · 3 评论 -
SpringBoot2.3整合Log4j2实现日志打印
1. 概述Apache Log4j2是对Log4j的升级,在其基础上进行了重大改进,并提供了Logback中可用的许多改进,同时修复了Logback架构中的一些问题,被誉为是目前最优秀的Java日志框架。1.1. Log4j2特点性能提升Log4j2包含基于LMAX Disruptor库的下一代异步记录器,在多线程中,异步记录器的吞吐量比Log4j和Logback高18倍,且延迟低自动重新加载配置与Logback一样可以在修改时自动重新加载其配置,不同之处在于其重新配置发生时不会丢失日志事件高原创 2021-11-28 19:11:42 · 1668 阅读 · 0 评论 -
SpringBoot2.3配置SSL证书开发HTTPS接口
1. 概述在网络访问中为了提高安全性,经常会使用SSL进行加密处理,SSL(Secure Sockets Layer)安全套接字层是为网络通信提供安全及数据完整性的一种安全协议,SSL在网络传输层对网络连接进行加密,本文主要介绍如何在SpringBoot项目中引入SSL证书开发HTTPS安全接口2. 获取SSL证书常用的获取方式有两种,其一是使用JDK自带的keytool工具生成自签名证书,其二是从第三方机构购买签名证书,下面以JDK自带的keytool工具生成证书。在JDK安装路径的bin目录下运原创 2021-11-26 19:00:00 · 1122 阅读 · 2 评论 -
SpringBoot2.3整合MapStruct实现Java bean映射
概述MapStruct 是一个代码生成器,它基于约定优于配置方法极大地简化了 Java bean 类型之间映射的实现。方便pojo、vo、dto与实体类之间的相互转换。更多详情请参阅官网引入核心依赖<properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> .原创 2021-11-23 17:58:04 · 1194 阅读 · 0 评论 -
SpringBoot2.3整合Spring Data JPA实现复杂(多表关联)查询
1. 概述上一篇介绍了Spring Data JPA单表基本操作,在实际开发中,经常会涉及到多表关联查询,本文主要介绍SpringBoot如何整合Spring Data JPA来实现复杂的多表关联查询。pom核心依赖和yml配置信息见SpringBoot2.3整合Spring Data JPA实现基本操作2. 表和数据准备首先新建几张表,sql如下:CREATE TABLE address_info ( id BIGINT UNSIGNED auto_increment NOT NULL COMM原创 2021-11-16 08:04:41 · 1446 阅读 · 1 评论 -
SpringBoot2.3整合Spring Data JPA实现基本操作
1. 概述Spring Data JPA是Spring基于ORM框架、JPA规范的基础上封装的一套JPA应用框架,可以使开发者用极简的代码即可对数据库的访问合操作,它提供了包括增删改查等在内的常用功能,且易于扩展、提高开发效率。2. 引入核心依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</a原创 2021-11-10 12:06:05 · 660 阅读 · 1 评论 -
SpringBoot2.3整合Quartz实现排除指定日期执行任务
1. 概述前面两篇分别讲述了SpringBoot整合Quartz实现简单和动态定时任务,在实际工作中,通常需要周末或节假日不需要执行某个定时任务,Quartz也为我们提供了相应的方法。本文主要介绍SpringBoot整合Quartz如何实现排除指定日期。Quartz中有个Calendar接口,其实现方法有7个,如下所示:AnnualCalendar:用于排除一年中的某一天BaseCalendar:实现了Calendar基本功能CronCalendar:用于排除CronExpression中某个时间原创 2021-11-04 17:26:36 · 1075 阅读 · 1 评论 -
SpringBoot2.3整合Flyway实现数据库版本管理
1. 概述Flyway用于数据库版本控制,官网这样解释Robust schema evolution across all your environments.With ease, pleasure, and plain SQL。更多介绍,请参阅Flyway官网。Flyway是一个开源的数据库迁移工具,它更倾向于简单和约定优于配置的方式,迁移数据可以写成SQL或者Java程序,支持多种接入方式,例如命令行客户端、Java API、Maven构建、Gradle构建等2. 核心依赖新建一个springbo原创 2021-11-02 17:37:26 · 517 阅读 · 1 评论 -
SpringBoot2.3整合Quartz实现动态定时任务
1. 概述上一篇介绍了Springboot整合quartz实现简单定时任务,本篇主要介绍Springboot整合quartz实现动态新建、暂停、恢复和删除定时任务,并实现数据库持久化。2. 核心依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId></de原创 2021-11-01 19:34:57 · 2966 阅读 · 5 评论 -
SpringBoot2.3整合Quartz实现简单定时任务
1. 概述Quartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单而强大的机制。更多介绍,请参阅Quartz官网1.1. 核心概念Job表示任务,是一个接口,只有一个方法void execute(JobExecutionContext context);开发一个新任务时,只需要实现该接口就能运行任务JobDetail任务描述,在每次执行实例时都重新创建一个job实例,不直接接受一个job实例,而是通过接受一个job实现类Trigger触发器,原创 2021-11-01 17:58:06 · 545 阅读 · 1 评论 -
SpringBoot2.3整合Kafka实现消息发送和接收
1. 开发环境说明本文主要介绍SpringBoot整合Kafka的完整过程,需要提前安装配置好开发环境。SpringBoot:2.3JDK:1.8Maven:3.6.3Zookeeper:3.6.3Kafka:2.12-3有不清楚如何安装Kafka的小伙伴,可以参阅阿里云服务器CentOS8安装Kafka,Kafka可以使用自带的Zookeeper,也可以自己安装,有需要了解如何安装Zookeeper的小伙伴,可以参阅Zookeeper3.6搭建单机版和集群版2. 项目搭建本文采用生产端和原创 2021-10-27 16:05:10 · 8869 阅读 · 2 评论 -
SpringBoot2.3整合vue-admin-template实现动态路由
本篇是SpringBoot整合vue-admin-template的第二篇,需要了解SpringBoot如何整合vue-admin-template实现数据库登录认证的小伙伴,请参阅SpringBoot整合vue-admin-template实现登录,本文将主要介绍SpringBoot整合vue-admin-template实现从后台数据实时查询数据动态加载菜单原创 2021-09-28 14:09:55 · 3389 阅读 · 23 评论 -
SpringBoot2.3整合RocketMQ实现消息发送和接收
1. 概述RocketMQ是一个统一消息引擎、轻量级数据处理平台。更多介绍可参阅RocketMQ官网1.1. 基本概念消息(Message):消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须属于一个主题主题(Topic):一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息订阅的基本单位。一个生产者可以同时发送多种Topic的消息,一个消费者只可以订阅和消费一张Topic的消息标签(Tag):用于同一主题下区分不同类型的消息,来自同一业原创 2021-09-09 12:11:32 · 5042 阅读 · 6 评论 -
SpringBoot2.3整合RabbitMQ实现消息延时消费
概述在实际工作中经常有些消息需要在某个事件发生之后或之前的指定时间点才处理,例如:订单在十分钟之内未支付则自动取消,用户注册成功后,如果三天内没有登陆则进行短信提醒等。RabbitMQ中提供了延迟队列来处理延后消息,其内部是有序的。RabbitMQ中的TTL是一个消息或者队列的属性,表明一条消息或者队列中的所有消息的最大存活时间,单位是毫秒。如果一条消息设置了TTL属性或者进入了设置TTL属性的队列,那么这条消息如果再TTL设置的时间内没有被消费,则会成为死信。消息设置TTL和队列设置TTL的区别.原创 2021-09-04 16:21:30 · 923 阅读 · 1 评论 -
SpringBoot2.3整合RabbitMQ实现消息发送和接收
概述RabbitMQ是一个接收,存储和转发消息数据的消息中间件。主要有四大核心部分,生产者、交换机、队列和消费者,工作原理如下图:核心名称解释Broker:接收和分发消息的应用Connection:publisher/consumer和broker之间的TCP连接Channel:在connection内部建立的逻辑连接,作为轻量级的connection极大减少了操作系统建立TCP connection的开销Exchange:交换机,message到达broker的第一站,根据分发规则,匹配查.原创 2021-09-03 22:04:09 · 1238 阅读 · 3 评论 -
SpringBoot2.3整合Redis6实现基本操作
1. 概述Redis是一个开源的key-value存储系统,支持多种数据类型,常用于做高速缓存和存储多样的持久化数据。本文主要介绍SpringBoot2.3整合Redis实现基本的数据操作,包括5中常用的数据类型和3中新型数据类型。2. 引入核心依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-re原创 2021-08-28 06:50:07 · 774 阅读 · 5 评论 -
SpringBoot2.3整合Curator5.0实现分布式应用
概述使用原生的zookeeper Java API开发存在一下问题:会话连接时异步的,需要自己处理Watch需要重复注册,否则不能生效开发的复杂性较高不支持多节点删除和创建,需要自己递归Curator是一种分布式协调服务的Zookeeper的JAVA客户端库...原创 2021-08-24 06:55:07 · 969 阅读 · 1 评论 -
SpringBoot2.3整合Zookeeper3.6实现分布式锁
在分布式项目中经常会使用到分布式锁,常见的分布式锁实现方案有Redis和Zookeeper,本文主要介绍如何使用Zookeeper实现分布式锁。1. Zookeeper实现分布式锁原理2. 代码实现public class DistributedLock { @Value("${zookeeper.connect.address}") private String connectStr; @Value("${zookeeper.connect.time-out}")原创 2021-08-22 15:24:48 · 388 阅读 · 1 评论 -
Springboot2.3整合Zookeeper3.6实现基本操作
本文主要介绍Springboot3.4整合Zookeeper3.6版本,需提前安装好zookeeper开发环境,有不清楚的小伙伴,请参考Zookeeper3.6搭建单机版和集群版1. 引入pom依赖<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.6.0</原创 2021-08-22 14:35:43 · 964 阅读 · 2 评论 -
SpringBoot整合HBase实现常用操作
1.开发环境SpringBoot:2.3.10HBase:2.3.5JDK:1.8本文基于已经搭建好的HBase开发环境,若不清楚的可以阅读另一篇win10搭建Hadoop3.2.2和HBase2.3.5单机版2.引入maven依赖新建springboot-hbase模块,在pom.xml中引入如下依赖:<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hba原创 2021-08-04 09:32:55 · 1932 阅读 · 0 评论 -
SpringBoot两种配置文件总结
1. 概述SpringBoot支持properties和yml两种配置方式,两种格式的功能类似,都可以完成项目的配置信息。但是properties的优先级要高于yml,而yml文件采用树状结构,直观上更加一目了然。2. application.properties2.1. 新增配置项在使用Spring Initializr创建项目时,会自动生成一个application.properties文件,在添加配置信息时,每行的格式如下:属性键=属性值称之为配置项。例如:server.port=80原创 2021-05-26 12:24:30 · 2160 阅读 · 2 评论 -
SpringBoot项目返回格式化日期
在实际开发中,数据库中保存得日期格式是datetime或timestamp,显示的日期格式不易阅读,前端需要指定格式的日期,有两种方式可以在项目中格式化日期配置文件中指定日期格式如果实体类的日期类型是Date,可以直接在配置文件中指定日期格式spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8如果实体类的日期类型是Java8中的LocalDateTime,上面的方法会失效,需要用到下面这种方式实体原创 2021-02-22 23:12:20 · 1651 阅读 · 1 评论 -
SpringBoot2.3.4整合Dubbo和Zookeeper实现分布式架构搭建
概述随着互联网的发展,分布式服务架构越来越受到开发人员的青睐,常用的分布式架构有阿里的Dubbo和SpringCloud,本文将主要介绍SpringBoot整合Dubbo实现分布式架构的搭建。大家都知道Dubbo是阿里开源的一个高性能优秀的服务框架,使得应用可以通过高性能的RPC实现服务的输出和输入功能。主要提供三大核心能力:面向接口的远程方法调用、智能容错和负载均衡、服务自动注册和发现。Dubbo架构如下图:Provider:暴露服务的服务提供方Consumer:调用远程服务的服务消费方Re原创 2020-11-20 15:36:00 · 1029 阅读 · 0 评论 -
SpringBoot2.3.4整合JavaMail实现发送邮件
概述在实际开发中,经常会涉及到发送邮件的需求,比如用户激活。Spring中提供了javamail库用于发送电子邮件,发送电子邮件的主接口是MailSender,用于发送普通邮件,继承于它的JavaMailSender接口用于发送复杂的邮件,JavaMailSender还提供了一个回调接口MimeMessagePreparator用于准备MimeMessage。Spring中提供了三种发送普通邮件的方式,本文都做了代码实现。更多详情请查阅spring官网中关于邮件的描述spring-framework官网原创 2020-11-07 20:36:04 · 1059 阅读 · 2 评论 -
SpringBoot整合vue-admin-template实现登录
vue-admin-template简介前后端分离开发模式越来越受开发人员的喜爱,开源项目vue-admin-template 是一个后台前端解决方案,它基于 vue 和 element-ui实现。更多详情请阅读vue-template-admin官网,vue-admin-template项目是其基础模板,本文基于vue-admin-template实现与SpringBoot的整合SpringBoot整合vue-admin-template...原创 2020-11-04 16:31:51 · 10187 阅读 · 6 评论 -
SpringBoot2.3.4整合xxl-job实现分布式定时任务
概述xxl-job是一个分布式任务调度平台,其核心设计目标时开发迅速、学习简单、轻量级、易扩展。现已开放源码并接入多家公司线上产品线,开箱即用更多详情参阅xxl-job官网xxl-job是一个十分优秀的开源任务调度平台,已经有很多知名的公司都接入了自己的系统。本文基于SpringBoot2.3.4整合xxl-job实现分布式定时任务。下载xxl-job源码码云地址github地址本文下载最新稳定版本2.2.0作为整合版本搭建环境在doc/db目录下找到sql文件tables_xxl_jo原创 2020-11-03 19:54:10 · 1640 阅读 · 1 评论 -
SpringBoot2.3.4整合Sharding-JDBC实现分库分表
概述什么是ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,由JDBC、Proxy和Sidecar三部分组成。其定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。更多详情请参阅ShardingSphere官网什么是分库分表随着时间和业务的发展,造成表里面的数据越来越多,如果再去对数据库表curd操作,很容易造成性能问题,这个时候,为了解决由于数据量过大而造成数据库性能降低的问题,常见的解决方案其一原创 2020-11-02 19:48:11 · 966 阅读 · 0 评论 -
SpringBoot2.3.4整合SpringSecurity+Jwt实现权限管理
概述本文主要介绍SpringBoot整合SpringSecurity和Jwt实现权限管理的认证和授权,所用到的技术栈及版本如下:SpringBoot:2.3.4SpringSecuritymybatis-plus:3.4.0jjwt:0.9.1hutool:5.4.5fastjson:1.2.74若想先了解SpringBoot整合SpringSecurity的实现过程可以参考另一篇SpringBoot2.3.4整合SpringSecurity实现权限管理JWT简介什么是JWTJWT是J原创 2020-10-30 15:58:48 · 1680 阅读 · 1 评论 -
SpringBoot2.3.4整合SpringSecurity实现权限管理
概述Spring是非常流行的Java应用开发框架,Spring Security是基于Spring框架,提供了一套Web应用安全性的完整解决方案。主要有两个方面,用户认证(Authentication)和用户授权(Authorization),用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户授权指的是验证某个用户是否有权限执行某个操作。SpringSecurity的主要特点如下:和Spring无缝整合全面的权限控制专门为Web开发而设计重量级框架Sprin原创 2020-10-28 19:52:00 · 2086 阅读 · 0 评论 -
SpringBoot2.3.4整合Shiro实现权限管理
概述Shiro是一个功能强大且灵活的开源Java安全框架,相比于SpringSecurity更加简单,Shiro可以执行身份验证、授权、加密和会话管理等Shiro的主要功能如下图:Authentication:身份认证/登录,验证用户是不是拥有相应的身份;Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能进行什么操作,如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;SessionManager:会话管理,即原创 2020-10-23 14:09:27 · 973 阅读 · 6 评论