
Spring boot
文章平均质量分 58
主要以Spring 全家桶相关的文章
众纳
越无知越自信
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spring Boot 从Socket 到Netty网络编程(上):SOCKET 基本开发(BIO)与改进(NIO)
本文探讨了Socket网络编程的核心概念与技术实现。首先介绍了TCP连接的三次握手和断开四次握手机制,以及Java中ServerSocket和Socket类的关键方法。通过BIO(阻塞式IO)实现案例展示了多线程模型存在的资源消耗问题,进而引入NIO(非阻塞式IO)单线程解决方案,使用Selector实现高效事件监听。虽然NIO提升了并发性能,但代码复杂度较高,文章最后指出Netty框架将作为更优解决方案在后续介绍。全文从基础到进阶,循序渐进地分析了不同IO模型的优缺点。原创 2025-06-04 14:57:36 · 1136 阅读 · 0 评论 -
Spring Boot 从Socket 到Netty网络编程(下):Netty基本开发与改进【心跳、粘包与拆包、闲置连接】
【摘要】本文介绍了基于Netty框架的网络编程实现方案。通过对比传统Socket的BIO/NIO模式,指出Netty作为NIO封装框架的优势:简化API设计,让开发者聚焦业务逻辑而非底层细节。文章详细展示了服务端(ServerBootstrap)和客户端(Bootstrap)的核心代码结构,包括线程组配置、通道初始化、消息处理器绑定等关键步骤。针对网络通信常见问题,提出了心跳机制(IdleStateHandler)和粘包拆包(LengthFieldBasedFrameDecoder)的解决方案,并给出了自定原创 2025-06-04 14:57:57 · 1060 阅读 · 0 评论 -
Spring Boot 3.X 下Redis缓存的尝试(四):进阶:使用Redis API操作缓存
本文介绍了在SpringBoot3.X中使用Redis API实现缓存服务的具体方法。通过改造Service层,利用RedisTemplate操作缓存数据,实现了学生信息的查询、更新和删除功能。文章展示了三个核心方法:getStuById(查询并缓存学生信息)、update(更新缓存数据)和delete(删除缓存),并提供了对应的Controller测试接口。该方法既保证了程序性能,又保持了业务逻辑的完整性,是一种有效的缓存实现方案。原创 2025-06-03 08:30:00 · 369 阅读 · 0 评论 -
Spring Boot 3.X 下Redis缓存的尝试(三):精进-用Jason进行序列化
【摘要】针对SpringBoot 3.x中使用Redis缓存时JDK默认序列化导致int类型数据无法正常显示的问题,通过自定义RedisTemplate和RedisCacheManager实现了JSON序列化方案。关键配置包括:使用Jackson2JsonRedisSerializer进行对象序列化,设置StringRedisSerializer处理键值,并配置缓存管理器支持注解的JSON存储方式。该方法有效解决了基本数据类型显示异常问题,同时通过设置1天的缓存有效期和空值过滤优化了缓存性能。原创 2025-06-03 08:15:00 · 303 阅读 · 0 评论 -
Spring Boot 3.X 下Redis缓存的尝试(二):自动注解实现自动化缓存操作
本文介绍了在SpringBoot项目中通过注解方式简化Redis操作的方法。首先需添加Swagger3.0和缓存相关依赖,然后通过@EnableCaching启用缓存功能。文章详细展示了如何使用@Cacheable、@CachePut和@CacheEvict注解分别实现Redis的查询、更新和删除操作,无需编写额外代码。同时配置了Swagger接口文档便于测试,并提供了完整的实体类、服务层和控制层代码示例。通过注解方式可以更高效地实现对Redis的CRUD操作,简化开发流程。原创 2025-06-02 17:18:14 · 765 阅读 · 0 评论 -
Spring Boot 3.X 下Redis缓存的尝试(一):初步尝试
摘要:本文介绍了使用Redis缓存优化系统权限查询的方案。针对多层级权限关系(角色-菜单-按钮)查询耗时的问题,提出将不频繁更新的数据存入Redis以减少数据库压力。提供了SpringBoot整合Redis的详细步骤:1)创建项目并配置pom依赖;2)编写Redis配置类,设置键值序列化方式;3)通过测试类演示String、List、Set、Hash等数据结构的操作。该方案能有效提升查询性能,实现业务解耦,适用于更新不频繁但查询耗时的场景。原创 2025-06-02 16:47:32 · 471 阅读 · 0 评论 -
手把手教你一步步通俗理解Spring Boot MyBatis 精髓(四):笑傲江湖
上一篇我们讲了动态SQL足以让我们应付常见的问题,但是如何让MyBatis更高效呢,那么本节会抛砖引玉式的讲解几个实例并实现分布查询。原创 2025-01-21 10:00:00 · 518 阅读 · 0 评论 -
手把手教你一步步通俗理解Spring Boot MyBatis 精髓(三):葵花宝典
上节针对MyBatis进行了基本的增删改查,这显然不足以应付更多的需求,比如:批量删除、条件查询等等,对于业务而言,新增、修改、删除的业务并没有查询需求场景多,这样查询多样化意味着我们需要对MyBatis有更深的理解。原创 2025-01-21 07:45:00 · 720 阅读 · 0 评论 -
手把手教你一步步通俗理解Spring Boot MyBatis 精髓(二):牛刀小试
书接上篇,我们为项目搭建了一个Spring Boot 的基本项目,并做了相关配置,今天你们将就部门表(sys_dept)进行实现一个简单的功能并借此向大家介绍MyBatis的最基本用法。原创 2025-01-20 08:30:00 · 443 阅读 · 0 评论 -
手把手教你一步步通俗理解Spring Boot MyBatis 精髓(一):厉兵秣马
我认为在学习一个技术前需要了解以下几个基本问题并给出答案:1.为什么学? 几乎大部分程序都会与数据库打交道,那么MyBatis就是处理数据库中的数据的(简单的讲就是增删改查),Spring Boot是的持久层就是干这事的(官方叫ORM)。因此,我们如果搞不定持久层的技术就像说相声的四门功课少了一门一样!2.怎么学会? 我会从最基本配置讲起并试图用通俗化的语言来一步的讲解,但只保证了我教了,至于你们会不会仍需要你们亲手实践,这里在教程的最后我会提供完整的项目代码供大家参考。原创 2025-01-20 07:45:00 · 1160 阅读 · 0 评论 -
警惕IDEA 2024版重大Bug问题:LomBok失效、Gradle冲突、Spring Boot启动错误
一直以来我认为工具类的软件是越新越好,因为工具代表着一定的先进性;但是IDEA 2024好好的给我上了一课,比如lombok 不起作用、比如Spring Boot 3.4.x 启动报错、再比如MyBatis log plus冲突、再比如Gradle插件冲突.原创 2025-01-17 15:59:07 · 1678 阅读 · 3 评论 -
Spring boot 在 Docker环境下的路径映射通用解决方案
Java 程序一般运行在Linux 下如(UB、Docker)等,但是很多开发环境是在Windows下开发的(也有在Windows 下安装Docker ,早前我就是为了怕Ubuntu非桌面麻烦就干脆使用Win10 上安装一个Docker );这就会出现移植运行时的路径问题,否则会出错。cmd -> 使用命令把D盘的image文件目标 = /users/images/ 目录。以下是一个文本编辑器的上传功能示例。Windows Docker 运行。......原创 2022-08-30 10:05:37 · 1476 阅读 · 0 评论 -
Mybatis Plus 扩展mapper接口与mapper xml文件不同目录 解决方案
场景说明尽管我使用Mybatis Plus 带来很多方便,但是大多情况下我们需要在一定逻辑下实现对应的业务(失去逻辑的业务没有意义)。于是我的做法,使用代码生成器生成Mybatis Plus 基础方法,然后再定义一个逻辑目录如Biz;同时在此目录下再创建对应的service目录、service\impl 目录、mapper目录、mapper\xml目录。{ps:我没有创建controller目录是因为基础目录里已经有了,直接用就行了}问题说明 ...原创 2022-04-21 17:28:31 · 4046 阅读 · 0 评论 -
Mybatis Plus 精华教程
引言Mybatis Plus 是继承了Java的精髓:MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。(引用官方原话) 在这里我想说几句题外话:1.推荐跳过Mybatis ,直接学MybatisPlus2.要掌握最好熟练使用SQL3.本文尽提取常用的一些知识点,这个远远没有官方资料更详尽!所以遇到问题多去官网查文档(文档是中文的,不用担心)。筹备数据库:mysql8.0.27 表:...原创 2022-03-25 11:04:59 · 2196 阅读 · 0 评论 -
Spring Boot 获取IP
在实际项目中,我们通常是需要拿到客户的IP用于分析客户所在的区域;例如:我们开发的系统需要用户在固定的一个区域内登陆,否则认为此用户是风险登陆。特别注意:有些系统需要使用了代理,因此要考虑到代理因素。实现过程:1.建立一个工具类package com.flo.util;import javax.servlet.http.HttpServletRequest;import java.net.InetAddress;import java.net.UnknownHostExcept原创 2021-11-18 13:07:11 · 1902 阅读 · 2 评论 -
使用thymeleaf 给List 加个序号
在处理业务数据时,通常有表头(主表),表身(从表),当我们在前端需要显示表身时不能使用ID当做序号(很有可能排序不同而错乱),那么处理办法,1.通过Java后端实现 2.通过前端遍历时添加。如下图效果我个人倾向通过前端实现以减少对后端的耦合度,实现方法:<table style="width: 1024px"> <tr> <th width="4%">序号</th> <t.原创 2021-08-25 10:42:28 · 1223 阅读 · 0 评论 -
Spring Boot 手把手实现PDF功能
需求: 在开发的业务系统中我希望能有一个转出PDF功能。比如:转出订单,转出发货单等。原理:使用itext 与flying-pdf 对 thymeleaf 模板填充后生成PDF实现:1.准备中文字体,用于PDF中关于中文文字的显示。链接: https://pan.baidu.com/s/1ubf9eWYHgqNgvtk0w7mauw 提取码: qd1i存放位置2.Maven 主要依赖<!--itext 生成PDF--><depe..原创 2021-07-08 09:04:08 · 2014 阅读 · 8 评论 -
Java 调取第三方接口,取返回值(RestTemplate)
需求 有时我们会调用第三方接口,并取相关的返回数据。思路:通过Map 进行获取,如果有子层,再通过Map方式进行强转后读取(注意做一下异常处理)示例@Transactional public String SendStartFlow(Integer NoID,String userCode,String rem){ String processInstanceId=""; String code="203"; String url =mail原创 2021-06-23 17:30:45 · 3644 阅读 · 1 评论 -
实现SpringBoot 通过 thymeleaf 生成 PDF实例
声明:本文参考于 https://blog.youkuaiyun.com/HXNLYW/article/details/104478142本文仅用于补充,与工具类细节工具类(注意字体路径,如果没有字体到他的Gitee上面下载)import com.lowagie.text.pdf.BaseFont;import com.lowagie.text.xml.xmp.XmpWriter;import lombok.extern.slf4j.Slf4j;import org.thymeleaf.Templat转载 2021-06-16 11:31:05 · 2048 阅读 · 1 评论 -
Spring Boot 获取接口调用者的IP
需求:我们实现一个登陆功能时,可能会有需要记录登陆者IP的需求,用于系统安全分析或账户来源分析。(当然还有更多应用场景)工具类如下(来源于网络,已兼容K8S 代理的情况)import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.util.StringUtils;import javax.servlet.http.HttpServletRequest;import java.net.Ine原创 2021-06-11 08:33:36 · 3501 阅读 · 0 评论 -
Spring Boot 提供跨域访问的配置
如题代码import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import org.springframework.web.cors.UrlBasedCorsConfigurationSource;import org.sp原创 2021-06-10 11:34:23 · 195 阅读 · 0 评论 -
thymeleaf 下拉选择框 处理 For LayUI
实体package com.yanzhen.po;import lombok.Data;@Datapublic class Dic { private Integer id; private String name; private String pName;}Daopackage com.yanzhen.dao;import com.yanzhen.po.Dic;import java.util.List;public interface DicDa原创 2021-05-31 11:31:54 · 674 阅读 · 1 评论 -
Spring boot 读取配置项 properties文件
需求项目有测试环境与正式环境,我们做了一个发邮件的功能;邮件内容分别显示的内容格式不同实现1.配置properties文件(我这里直接写在application.properties)#邮件配置#邮件发送地址mail.hicky=http://********:9020/PostMail/sendEmailmail.seturl=http://test.***.com/pluto/p/TaskDetail/#mail.hicky=http://*******:9020/PostMail/原创 2021-05-24 16:46:34 · 180 阅读 · 0 评论 -
mybatis sql注释是个坑能,能在外部注释不要在执行语句上注释
Mybatis时,在处理SQL语句时不建议把注释写在具体执行语句内,否则会拼接失败。我如下处理 <!-- 以下为注释 --><!-- 1.重新变更项目的计划完成时间 --><!-- 2.重新评估本任务的计划完成时间--><!-- 3.更新邮件的计划完成时间--><!-- 4.更新子阶段以后的计划完成时间与计划开始时间--> <update id="updateTaskPlan" pa原创 2021-05-12 15:04:24 · 615 阅读 · 0 评论 -
Mybatis 通过传入的List实现批量新增
需求其实在实现前后端交互的时候,我们不需要时时的调用接口;举例说明:购物车,可以通过前端选择 N个产品,然后一次提交。代码实现POpackage com.npi.po;import lombok.Data;import java.util.Date;@Datapublic class ProjectStage { private Integer id;//ID private Integer stage;//大阶段 private Integer proj原创 2021-05-07 17:20:28 · 576 阅读 · 2 评论 -
Spring Boot 如何提高代码的利用性
承如伟人言:实践是检验真理的唯一标准接口的复用性Java 接口 存在的意义在于多态,目的都是提高代码的重复利用性。需求做饭先先有一个模板1 备饭2 锅3 火4 盛饭那么做一个接口洗再做一个实现类来继承米 的 洗方法红薯 的 洗方法这就是多态当我们做饭的时候做米饭1 米=new 米 米.洗2 锅3 火4 盛饭做红薯饭1 红薯=new 红薯(); 红薯.洗2 锅3 火4 盛饭在现有的项目中,会有公用方法,最好把这些方法把它抽离;需求:1.原创 2021-04-22 10:27:26 · 167 阅读 · 0 评论 -
关于Spring boot 分层 整理
一般的项目模块中都有DAO、Entity、Service、Controller层。Entity层:实体层 数据库在项目中的类Entity层是实体层,也就是所谓的model,也称为pojo层,是数据库在项目中的类,该文件包含实体类的属性和对应属性的set、get方法;DAO层: 持久层 主要与数据库进行交互DAO层=mapper层,现在用Mybatis逆向工程生成的mapper层,其实就是dao层。DAO层会调用entity层,DAO中会定义实际使用到的方法,比如增删改查。DAO 层的数据源和数据库连转载 2021-04-21 18:01:15 · 671 阅读 · 0 评论 -
MyBatis 利用SQL 的UUID 实现多表关联的树结构
需求在VUE +Element 实现树结构时遇到一个问题,要求子节点有一个唯一标识 (据我所知LayUI 不存在这个问题)很显然不能用各外键的ID作为唯一标识(当时想了一个办法就是把各节点的ID * 几个不同的值,但仍然有可能重复,所以现在看很可笑);解决文案使用MySQL 的UUID() 方法实现SQL<sql id="TestSQL"> UUID() as UUID, s_type.id, s_type.name,原创 2021-04-16 16:08:42 · 395 阅读 · 0 评论 -
MyBatis 同一张表实现子级关系
需求实现如下: 热点类型 - mold_staus - CODE(0) NAME(报废) - CODE(1) NAME(维修) - CODE(2) NAME(开发) - CODE(3) NAME(试模) - CODE(4) NAME(生产) 变更类型 - npi_change_class - CODE(1) NAME(内部变更) - CODE(2) NAME(外部变更) . . .数据库表SQLselect id,原创 2021-04-15 13:48:03 · 346 阅读 · 0 评论 -
SpingBoot Mybatis 使用嵌套collection数据集
需求描述表结构模板表 模板子表(多个子模板) 模板子表子表(多个明细) 模板子表外链表具体业务 模板 模板子阶段 子阶段任务 子阶段任务库(另一张表)SQL关系 select s_type.id, s_type.name, s_type.type_code, s_type.type_name, npi_project_class.id as cid, npi_project_class.stage, npi_project_class_task.id原创 2021-04-14 18:27:03 · 200 阅读 · 0 评论 -
Spring Boot 上传文件大小上限解决方案
在做项目时,有一个视频上传的功能,但是上传视频时会报错,提示超出文件大小;解决方案就是:application.properties文件中增加#上传文件大小限制 兼容多个Spring boot 版本spring.http.multipart.maxFileSize=200Mbspring.http.multipart.maxRequestSize=200Mbspring.servlet.multipart.maxFileSize=200MBspring.servlet.multipart.ma原创 2020-10-14 17:22:50 · 429 阅读 · 0 评论 -
Java SpringBoot 图片上传无法马上显示,只能重启IDE后才生效解决方案
症状说明:当上传图片时不能马上显示,后台接收图片保存到本地,返回保存路径,发现页面的标签无法显示图片,F12显示无法加载图片,请求地址为ip:port/static/uploadFile(楼主将图片保存到了static下),显示404无此资源。将项目重新启动之后,图片可以正常加载。原因分析:当程序加载后自动会加载到内存中,对当前目录不做读取。解决方案就是设置虚拟目录做个配置类package com.flo.config;import org.springframework.context.a原创 2020-09-28 19:33:43 · 2042 阅读 · 4 评论 -
MyBatis一对多或多对多处理方式
一切从业务出发产品表:prdt房间表:room产品适用房间表:prdtroom需求:通过查产品能查到对应适用的房间位置测试SQLselect prdt.id as id, prdt.productName as productName, prdt.productImage as productImage, prdt.livetype as livetype, prdt.原创 2020-09-25 14:27:20 · 298 阅读 · 0 评论 -
Java 给Layui 界面的选择框赋值
需求是这样式的:添加时的下拉框自动下拉从数据库得到的结果。功能原理:在新增跳转时传入一个Model 然后渲染时进行For eah 拼接。Java Controller/** * * 添加账户跳转页 */ @RequestMapping("/addUser") public String addUser(Model model){ List<Company> list= companyService.findAll();//把原创 2020-09-22 09:50:33 · 841 阅读 · 0 评论 -
关于Mybatis处理数据字段:status 时的怪事分析
事件描述:数据库为Mysql表如下:Po层@Datapublic class SysUser { private Integer id;//主键1 private Integer type;//2 0 本公司 1 代理 2 经销 private Integer companyId;//3 公司ID 公司ID 0 代表本公司 private String companyName;//4 公司名称 private Integer role;//5 0管理原创 2020-09-22 09:06:41 · 1885 阅读 · 1 评论 -
layui富文本编辑器在Java项目中的应用
需求:在线反馈功能,为了更好描述问题,因此问题提交前有一个图文描述(能支持视频最好)。工具:后端:Java前端:LayUI插件:thymeleaf文本编辑器用:kz.layedit 富文本编辑器拓展HTML<!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head> <meta charset="utf-8"> <title>l原创 2020-09-17 18:25:35 · 795 阅读 · 0 评论 -
LayUI Java 上传图片功能
众所周知,CS 程序之所以干不过BS程序最大的原因就是不能或者很难实现一个文本编辑并且前台显示,当然可以通过第三方插件实现,这样就会有程序文件大、占内存、加载慢等问题。(在这里不是说CS一无是处,比如CS在数据处理方面还是非常快的,安全性相对更高等等) 需求:我们做商品管理时,需要上传商品主图;将来我们需要把上传成功后的路径传存到数据库中,方便用到时调用并显示。 前端:LayUI 框架 插件:thymeleaf前端<!DOCTYPE html><...原创 2020-09-17 17:32:42 · 1149 阅读 · 1 评论 -
SpringBoot +LayUI+thymeleaf 实现一个功能(五) 删除
功能说明删除时应该删除子节点,有两个方式:1.通过一条SQL语句进行删除 2.执行两个删除语句。数据源增加 &allowMultiQueries=trueJAVA 后端daovoid deleteDeptById(int id);mapper<!--删除操作 根据id删除节点以及下面的子节点--> <delete id="deleteDeptById" parameterType="int"> delete from dep原创 2020-09-03 18:04:47 · 687 阅读 · 1 评论 -
SpringBoot +LayUI+thymeleaf 实现一个功能(四) 修改
Java 后端dao 层void updateDept(Dept dept);mapper<!--修改部门信息--> <update id="updateDept" parameterType="com.flo.po.Dept"> update dept set name=#{name},sort=#{sort},status=#{status} where id=#{id} </update>Service接口void原创 2020-09-03 17:51:07 · 489 阅读 · 0 评论 -
SpringBoot +LayUI+thymeleaf 实现一个功能(三) 新增
前端dept.html后端dao层package com.flo.dao;import com.flo.po.Dept;import org.springframework.stereotype.Component;import java.util.List;@Component("deptDao")public interface IDeptDao { /** * 查询部门信息 */ List<Dept> findAll();原创 2020-09-03 17:31:11 · 585 阅读 · 0 评论