Spring Boot从入门到实战
文章平均质量分 65
真正的干货,工作多年积累的工作实战精华,几乎囊括了工作中所有的实用技术,每篇文章都是精心编写,每篇文章都是花费2天以上才完成,作为一个java程序员这个专栏的东西你必须全部掌握。好酒不怕巷子深,你只会后悔看到的晚。
风流 少年
我走的很慢,但从不后退!
展开
-
SpringBoot入门教程:Word模板生成docx文件
自己写一个docx文档,然后另存为选择格式 Word XML 文档(*.xml),然后使用thymeleaf语法将实际值使用表达式代替。原创 2024-05-17 10:58:45 · 478 阅读 · 0 评论 -
SpringBoot集成p6spy
P6Spy 是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。通过 P6Spy 我们可以对 SQL 语句进行拦截,相当于一个 SQL 语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。这里主要用于在控制台打印SQL时能自动将问号替换成实际参数打印一个可执行的SQL。p6spy本身比较好集成,但是如果把它集成到一个复杂的项目中可能会有很多问题。原创 2024-01-16 19:03:51 · 391 阅读 · 0 评论 -
SpringBoot集成rdf-file
大文件处理,对CPU、IO、网络消耗非常大,在集群环境下通过分片处理可以有效的解决单机瓶颈。Rdf-file组件设计用来在集群环境中处理这种结构化文件的通用组件。原创 2023-10-14 19:44:31 · 119 阅读 · 0 评论 -
SpringBoot入门教程:Java执行Python脚本文件
java执行Python有多种方式,可以使用Java原生API,也可以使用第三方库,使用Java原生的API方式能够支持执行的Python脚本中import第三方依赖。原创 2023-08-28 09:50:25 · 436 阅读 · 0 评论 -
SpringBoot集成Drools
规则引擎全称为业务规则管理系统(Business Rule Manage System),英文名为BRMS,其实就是将计算逻辑写在脚本中,通过Java调用脚本获取计算结果,目的是。一般脚本都是非编译型的,这就意味着脚本随时改随时生效,不需要重启服务,也就是计算逻辑可以随时动态调整,这是将计算逻辑硬编码到Java中所达不到的实时生效的效果。应用场景:计算逻辑改动比较频繁,计算逻辑可以让业务人员在页面上任意配。是使用最广泛并且开源的规则引擎。Drools最大的特点是在脚本中可以写Java代码。原创 2023-08-18 17:22:11 · 521 阅读 · 0 评论 -
SpringBoot入门教程:MySQL全文索引fulltext
在MySQL 5.7.6之前,全文索引只支持英文全文索引,不支持中文全文索引,从开始,MySQL内置了ngram全文解析器,支持InnoDB数据库引擎,用来支持中文、日文、韩文分词。-- 查看数据库版本号 select version();原创 2023-07-07 15:24:32 · 412 阅读 · 0 评论 -
Spring入门教程:@Transactional事务失效常见场景
Spring事务是基于动态代理或者CGLIB和AOP实现的。原创 2022-12-11 20:53:31 · 2268 阅读 · 1 评论 -
SpringBoot入门教程:下载导出Excel(EasyExcel)
SpringBoot入门教程:导出Excel(EasyExcel)原创 2022-09-18 17:42:19 · 417 阅读 · 0 评论 -
SpringBoot入门教程:MySQL8新特性(通用表表达式)
定义递归通用表达式,递归通用表表达式是指表达式中还引用定义的表达式,使用递归通用表达式要注意递归结束的条件。原创 2022-09-11 19:33:00 · 343 阅读 · 0 评论 -
SpringBoot入门教程:MySQL8新特性(优化器索引)
隐藏索引就是查询的时候不会使用到该索引,但是当插入或者删除数据时仍然会维护索引列表。隐藏索引的常用场景是判断某个索引是否有效果。先隐藏索引看一下SQL执行时间,然后再放开索引,再查看一下执行时间,看看放开索引是否真的提高了效率,如果没有提高查询效率证明这个索引是多余的,可以直接删掉。注意:主键是不可以设置不可见索引。原创 2022-09-11 11:28:36 · 606 阅读 · 0 评论 -
SpringBoot入门教程:MySQL8新特性(窗口函数Window Function)
根据用户编号对订单数据先进行分区(分组、分类),然后对每个分区给出行号,并且根据分区字段, 排序字段 进行组合排序。注意:使用了row_number可以看到数据的顺序是按照amount值进行排序了。想要其它排序就自己写排序规则。row_number()表示行号,就是对每条记录增加一个行号,行号从。案例:查询每个用户的订单数据详情 ➕ 当前用户的订单总金额。,每个分区会从1重新开始给出新的行号。开始,如果对数据进行分区。原创 2022-09-10 12:28:36 · 293 阅读 · 0 评论 -
SpringBoot入门教程:MySQL8新特性(JSON数据类型)
抽取json中指定字段对应的值,如果是字符串。config 配置信息字段的数据类型为。表示当前document。存在则更新,不存在则添加。对json值去掉双引号。根据value找key。原创 2022-09-05 22:32:07 · 329 阅读 · 0 评论 -
SpringBoot入门教程:数据库恢复(mysqldump和mysqlbinlog)
MySQL的所有的数据库改变操作(除了select等)都会记录到一种二进制文件中,这种文件就是bin log。bin log 用来实现主从复制,也常用来误删数据库找回丢失的记录。原创 2022-09-03 22:25:51 · 1247 阅读 · 0 评论 -
SpringBoot入门教程:浅聊POJO简单对象(VO、DTO、Entity)
POJO包括很多,其中有entity、dto、vo、bo、do等,各个公司对每种pojo可能不尽相同,如果分的太细感觉很繁杂,如果不分又太笼统,这里主要介绍一下实际开发中如何折中的使用。原创 2022-08-29 22:21:52 · 3441 阅读 · 0 评论 -
SpringBoot入门教程:枚举嵌套分组
接口中可以定义多个枚举定义,而接口中的枚举可以实现当前接口。在接口中定义多个枚举,可以对枚举进行分组(分类),如 大类中又分小类,或者 一级中又分二级。对枚举分组,在使用时就像链时语法一样可以一直点下去。......原创 2022-08-25 21:58:12 · 190 阅读 · 0 评论 -
SpringBoot 入门教程:Postman常用功能
Postman必会技能原创 2022-08-19 22:51:22 · 2331 阅读 · 0 评论 -
SpringBoot入门教程 Lombok使用注意事项
如果对Lombok的注解不是很了解话,可能在某些细节上会遇到问题,但无论遇到什么问题其实看一下.class文件生成的内容就知道哪里出问题了。 一:@NoArgsConstructor生成无参构造函数。@NoArgsConstructorpublic class Person { private Long id; private Integer age;}🔽public class Person { private Long id; privat......原创 2022-05-30 16:02:45 · 247 阅读 · 1 评论 -
SpringBoot POI Word合并
POI 常用来操作Excel,但也可以用来操作Word。一:pom.xml<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version></dependency><dependency> <groupId>org.apache.poi&.原创 2022-01-25 21:05:04 · 877 阅读 · 0 评论 -
Activiti7工作流引擎:进阶篇(二) SpringBoot整合工作流Activiti7
SpringBoot整合Activiti7需要与SpringSecurity整合。SpringBoot整合Activiti7之后的所有数据库Id值都使用了类似于UUID样的值。SpringBoot又封装了一套API来操作Activiti。1. pom.xml<dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter</artif.原创 2021-12-16 22:15:03 · 3192 阅读 · 3 评论 -
SpringBoot入门教程 - Redis发布订阅模式
一:Redis发布订阅Redis可以像MQ一样发布消息和订阅消息,只不过这种发布订阅是广播模式,即每个订阅者都会收到相同的消息。二:集成pom.xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><depende原创 2021-09-27 16:43:05 · 481 阅读 · 0 评论 -
SpringBoot入门教程 日志TraceId
一:日志TraceId使用场景1.1 场景一工作中根据日志排查问题时我们经常想看到某个请求下的所有日志,可是由于生产环境并发很大,每个请求之间的日志并不连贯,互相穿插,如果在打印日志时没有为日志增加一个唯一标识是没法分辨出那些日志是那个请求打印的。1.2 场景二在微服务场景下,我们想知道一个请求中所有和该请求相关的链路日志,此时也需要为日志增加一个唯一标识。通常可以使用UUID或者其它雪花算法等作为唯一标识。二:MDCMDC(Mapped Diagnostic Context)映射诊断环境,是原创 2021-09-22 14:51:45 · 1969 阅读 · 0 评论 -
SpringBoot 监听redis key过期回调
一:修改redis配置/usr/local/etc/redis.confnotify-keyspace-events Ex二:SpringBoot 集成redis<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>原创 2021-07-22 20:53:06 · 559 阅读 · 0 评论 -
SpringBoot集成Apollo配置中心
一:简介Apoll https://github.com/ctripcorp/apollo 是携程开源的配置中心服务。二:Apoll 快速安装本机快速部署Apoll https://www.apolloconfig.com/#/zh/deployment/quick-start。部署成功后可以通过http://localhost:8070来访配置中心。注意:Quick Start部署方式只是让开发者以最快的速度部署服务快速体验基本功能,所以此方式部署不支持增加环境,默认只有一个DEV环境,只有通原创 2021-07-12 08:28:56 · 270 阅读 · 0 评论 -
SpringBoot 集成Redis pub/sub
一:简介Redis 发布订阅(pub/sub)是一种消息广播模式:发送者(pub)发送消息到频道(channel),订阅者(sub)从频道中订阅消息。# 订阅一个或多个频道 subscribe <channel> [channel ...]127.0.0.1:6379> subscribe imchatChannelReading messages... (press Ctrl-C to quit)1) "subscribe"2) "imchatChannel"3) (i原创 2021-07-08 11:47:28 · 393 阅读 · 0 评论 -
SpringBoot集成uid-generator
1. sqlCREATE TABLE `worker_node` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'auto increment id', `host_name` varchar(64) NOT NULL COMMENT 'host name', `port` varchar(64) NOT NULL COMMENT 'port', `type` int(11) NOT NULL COMMENT 'ode type: AC原创 2021-07-07 20:17:21 · 190 阅读 · 0 评论 -
SpringBoot入门教程:Spring Boot Admin 监控
一:简介Spring Boot Admin(https://github.com/codecentric/spring-boot-admin)是一个开源社区项目,用于管理和监控SpringBoot应用程序。应用程序作为Spring Boot Admin Client向为Spring Boot Admin Server注册(通过HTTP)或使用SpringCloud注册中心(例如Eureka,Consul)发现。二:环境admin-server2.1 pom.xml引入 spring-boot-adm原创 2021-05-03 17:02:44 · 263 阅读 · 0 评论 -
SpringBoot入门教程:检查重复提交
检查某个方法在指定时间内不能重复提交。检查重复提交是借助于redis。1. pom.xml<dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.11.1</version></dependency>2. 重复提交注解@Target(ElementTy.原创 2021-02-01 15:29:02 · 406 阅读 · 0 评论 -
SpringBoot入门教程:Netty
<dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.58.Final</version></dependency>一:服务端服务端接收客户端发送的数据,服务器端主动向客户端推送数据。@Slf4j@Order(1)@Componentpublic class原创 2021-01-29 11:31:55 · 261 阅读 · 0 评论 -
SpringBoot入门教程:Twitter雪花算法(IDWorker)
雪花算法常用于数据库主键id的值(防止将来分库分表时使用数据库id自增造成id重复),或者订单号等。/** * Twitter 雪花Snowflake算法 */public class IDWorker { /** * 起始的时间戳 */ private final static long START_STMP = 1480166465631L; /** * 每一部分占用的位数 */ private final static原创 2021-01-24 13:50:33 · 1065 阅读 · 0 评论 -
SpringBoot入门教程:@EnableXxx和自动装载
一:ImportSelector接口1.1 User@Data@NoArgsConstructor@AllArgsConstructorpublic class User { private Long id; private String username;}1.2 UserConfiguration注意:该类并没有使用spring的注解,没有使用@Configuration也没有使用@Component,spring扫描的时候并不会装载该类作为Bean。public c原创 2020-12-16 21:30:28 · 250 阅读 · 0 评论 -
SpringBoot入门教程:使用go-mysql-transfer将mysql同步到elasticsearch
一:安装GitHub: https://github.com/wj596/go-mysql-transfer1.1 linux、windows安装直接下载二进制文件.zip即可。1.2 Mac安装1.2.1 安装go并配置环境变量Mac没有二进制文件,所以只能自己下载源码进行编译,go-mysql-transfer 是使用go语言开发的,所以需要先安装go语言https://studygolang.com/dl,然后配置环境变量。vi ~/.bash_profile# GO的安装目录e原创 2020-12-07 16:59:44 · 950 阅读 · 0 评论 -
SpringBoot入门教程:Spring Security 前后分离
Spring Security网络上很多前后端分离的示例很多都不是完全的前后分离,此篇文章要用最简单的示例实现出真正的前后端完全分离的权限校验实现。1. pom.xml主要依赖是spring-boot-starter-security和jwt。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</.原创 2020-11-13 16:59:58 · 423 阅读 · 0 评论 -
SpringBoot入门教程:MyBatis二级缓存
一:一级缓存和二级缓存简介①、一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。②、二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。写这篇文章的初衷:MyBatis二级缓存在实际工作中一般都不会使用,但是原创 2020-11-10 13:43:11 · 1120 阅读 · 0 评论 -
SpringBoot入门教程:RestTemplate
一:简介通常在Java代码中调用其它http 接口的话会使用HttpClient,不过这个使用起来有些繁琐,Spring中推出了一个简单的RestTemplate用来调用rest api,使用起来非常简单。二:基础示例@RestController@RequestMapping("/user")public class UserController { @PostMapping("/regist") public User regist(@RequestBody CreateUs原创 2020-11-09 15:40:46 · 976 阅读 · 0 评论 -
SpringBoot入门教程:Redis四大缓存问题(击穿、穿透、雪崩、数据一致性)
一:穿透假如我们的id都是数据库自增,大于0的值,如果使用 http://localhost:8080/users/-1 访问以下接口就会出现在缓存中查不到,在数据库中也查不到的现象,这种现象就叫做缓存穿透。@Slf4j@RestController@RequestMapping("/users")public class UserController { @Autowired private RedissonClient redissonClient; @Autowi原创 2020-11-09 10:58:01 · 543 阅读 · 0 评论 -
SpringBoot入门教程:MapStruct
开发中我们可能使用通用Mapper或者MyBatis-Plus去查询数据,而这类框架都是返回的实体,实体是和数据库中的表一一对应的,而作为接口的返回值我们无需把整个实体都暴露给前端,这就需要将实体转为DTO了,通常有以下转换方式:自己写代码手动转换(这种方式代码量多,而且不优雅)BeanUtils.copyProperties(entity, dto),这种方式是通过反射来实现的,一般反射效率相对有点低使用ModelMapper框架(这种方式是通过反射来实现的,一般反射效率相对有点低)原创 2020-11-05 17:56:13 · 1179 阅读 · 0 评论 -
SpringBoot入门教程:AOP
1. 需要在Application中开启AOP@EnableAspectJAutoProxy(exposeProxy = true)2. 引入aop依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency>3. @Aspect原创 2020-11-01 12:21:15 · 347 阅读 · 1 评论 -
SpringBoot入门教程:JSON
一:JacksonJackson 是SpringBoot的JSON默认框架。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> <version>2.3.4.RELEASE</version></dependency>在序列化的时可原创 2020-10-31 22:05:51 · 232 阅读 · 0 评论 -
SpringBoot入门教程:Redisson分布式锁
一:简介Redis是一个单线程的内存服务器。Redisson是redis的一个Java客户端,为使用者提供了一系列具有分布式特性的常用工具类,使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式系统的难度,同时结合各富特色的分布式服务,更进一步简化了分布式环境中程序相互之间的协作,Redisson底层采用的是Netty 框架。Redisson比Jedis功能更加强大。Redisson是我国的一位大牛写的一个框架,可以使用 redis做类似J原创 2020-10-31 15:48:41 · 720 阅读 · 0 评论 -
SpringBoot入门教程:在IDEA中使用远程调试Remote
需求:很多时候本地的程序是正常的,但是测试环境是有问题的,此时我们可以通过增加很多日志输出来确定具体的问题,这种方式需要添加完日志还要重启服务而且只能看日志输出的内容,其它变量值还是不知道,我们可以借助IDEA提供的Remote在本地来远程调服务器代码。本地远程调试就像在本地启动服务连的测试环境的效果一样。一:准备测试项目二:启动测试环境项目SpringBoot 项目在启动时需要指定远程调试的参数,其中最重要是address表示端口号。java -Xdebug -Xrunjdwp:transp.原创 2020-10-20 17:58:40 · 804 阅读 · 0 评论