SpringBoot

浏览该分类下的所有文章

@EnableWebMvc:Spring MVC定制的双刃剑

@EnableWebMvc是Spring MVC的核心开关,标志开发者接管所有MVC配置。它会覆盖Spring Boot的自动配置,导致静态资源、视图解析、消息转换、CORS等功能失效,常见表现为404、JSON 序列化错误或跨域请求被拦。解决方案是:在 Spring Boot 项目中尽量去掉 @EnableWebMvc,仅实现 WebMvcConfigurer;若必须使用,则必须手动配置资源处理、默认 Servlet、消息转换器、跨域映射等关键组件。文章还给出传统 Spring MVC 与文件上传的完整配置示例,并提供使用 @EnableWebMvc 的场景判断表、配置检查清单以及调试方式,帮助开发者在需要完全自定义时安全使用该注解。

SpringBoot中ThreadLocal的妙用:原理、实战与避坑指南

文章介绍了 ThreadLocal 在 SpringBoot 中的原理与实战。ThreadLocal 通过 ThreadLocalMap 为每条线程提供私有存储,键采用弱引用避免泄漏,但若不在 finally 中调用 remove(),值仍会残留导致内存泄漏。示例展示在 Filter/Interceptor 中设置用户信息或 TraceID,业务层可直接通过封装的 Holder 获取,省去层层传参。随后列出四大常见坑:①忘记 remove 导致内存增长;②子线程无法继承导致上下文缺失;③初始化时空指针;④事务/异步场景上下文丢失。对应解决方案包括:在 finally 中强制 remove、使用 InheritableThreadLocal 或阿里 TransmittableThreadLocal、懒加载或显式传参。最后强调使用原则——及时清理、限定作用域、在复杂并发场景选用合适工具,才能安全高效地利用 ThreadLocal。

基于Spring Boot + MyBatis-Plus + Thymeleaf的评论管理系统深度解析

本文围绕基于 Spring Boot、MyBatis‑Plus 与 Thymeleaf 的评论管理系统展开深度解析。首先阐述系统采用前后端分离、模板渲染相结合的架构,并选用 Spring Boot、MyBatis‑Plus、Redis、Bootstrap5 等技术以提升开发效率和性能。随后详细说明后端实现,包括分页查询(LambdaQueryWrapper 动态条件、PaginationInnerInterceptor 插件原理)、批量操作(删除、审核状态修改)及事务、幂等性保证。接着探讨缓存策略:评论变更后全库或按键前缀刷新 Redis,并提出懒加载与预加载方案。最后介绍前端响应式布局(表格/卡片切换、固定列宽、Flex 布局)及交互细节(内容展开、批量选择),实现 PC 与移动端的良好用户体验。

留言板性能优化:从全量递归到按需加载的实践

原博客留言板一次性递归查询全部评论,导致数据库压力大、页面响应慢、资源浪费。优化思路改为首次只加载顶层评论,新增“展开回复”按钮,用户点击后通过 AJAX 异步获取该评论的完整回复树并平铺渲染。后端增加 replyCount 字段,仅查询顶层并递归返回子树,提供 `/comments/replies/tree` 接口;前端改造 HTML、JS 实现懒加载、展开/收起、平铺展示并优化样式。JMeter 测试显示平均响应时间从 1850 ms 降至 320 ms,查询时间降 97%,传输量降 93%,内存峰值降 82%,页面加载提升约5 倍,用户体验显著改善。

将Spring Boot项目部署到阿里云CentOS7并设置关闭命令行终端项目不停止运行

本文介绍了在阿里云 CentOS7 上部署 Spring Boot 项目并实现关闭终端后仍保持运行的完整流程:先在 yml 中更改数据库 IP,执行 clean‑package 打包得到 jar;登录云服务器,创建目录并上传 jar;编写 startup.sh 脚本,使用 `nohup java -jar /myworkspace/blog.jar --server.port=8081 &` 启动并将其设为可执行;通过 `chmod -R 777` 授权后运行脚本,使用 `tail -f nohup.out` 检查日志确认启动;提供了 Nginx HTTPS 配置参考;最后给出查询和 kill 进程停止 Spring Boot 的命令。

SpringBoot结合ip2region实现博客评论显示IP属地

本文介绍在Spring Boot博客系统中使用ip2region实现评论IP属地显示的完整方案。通过IpParseUtil类的getIpAddr获取请求IP,再用parse方法解析为“国家|区域|省份|城市|ISP”或自定义字段列表。将解析结果写入Comment实体的location字段,在前端页面读取并展示。文章还列出所需技术栈(Spring Boot、MySQL、HTML/CSS/JS、ip2region、Commons IO、Lombok)以及关键代码实现和集成步骤,帮助开发者快速为评论添加地理位置信息,提高互动体验。

SpringBoot+Elasticsearch按日期实现动态创建索引

文章介绍了在 SpringBoot 中通过 @Document 的 EL 表达式实现 Elasticsearch 按日期动态创建索引的完整方案。核心思路是把索引后缀(如 yyyy_MM_dd)封装为 Bean(esIndex),并在每天零点的定时任务中销毁旧 Bean、重新注册新值,同时手动调用 ElasticsearchRestTemplate 创建索引,以保证 shards、replicas 等配置不丢失。实体类需声明 createIndex = false,避免自动创建导致参数缺失;示例代码包括配置类、实体、Repository 与 Controller,演示了定时更新索引和保存数据后在 Kibana 中观察新索引的效果。

SpringBoot接口加密解密工具

本文介绍了一个基于 SpringBoot、通过注解实现的接口加密解密工具。工具支持 Base64、DES、3DES、AES、RSA 等对称/非对称算法以及 MD5 加密,只需在接口上添加 @ZxfEncryptResponse 或 @ZxfDecryptRequest 并指定 AlgorithmType 即可完成响应加密或请求解密。使用步骤包括拉取代码、打包成 jar、在项目中引入依赖并在配置文件中配置相应的密钥(DES、3DES、AES、RSA 公私钥),提供了一套可直接使用的密钥示例以及示例代码。项目源码已开源于 Gitee。

HTML获取SpringBoot从model传的值

本文说明了在 Spring Boot 中如何通过 Controller 的 Model 向前端页面传递数据,并在 HTML 模板中使用 Thymeleaf 语法 [[${...}]] 获取并显示这些值。文章给出典型的 Controller 代码示例(使用 model.addAttribute 将数据放入模型),以及对应的 HTML 写法,演示了渲染后的效果图,帮助读者快速掌握后端数据在前端页面的读取与展示方法。

SpringBoot绕过Nginx代理获取客户端真实IP的解决方案

本文介绍在 SpringBoot 项目中通过 Nginx 代理获取客户端真实 IP 并解析其归属地的实现方案。首先在 Nginx 配置 `X-Real-IP` 与 `X-Forwarded-For` 头部,将真实 IP 传递给后端;随后编写 `IpUtil` 工具类,从请求头或 `request.getRemoteAddr()` 读取 IP;引入 `ip2region` 库并在资源目录放置 `ip2region.db`,使用 B‑tree 算法查询 IP 对应的省、市或国家信息;最后在控制层调用 `IpUtil.getIpAddr` 与 `IpUtil.getIpPossession`,将解析结果显示在评论区,实现博客评论的 IP 属地展示。

解决SpringBoot打成jar包无法加载resources下文件的问题

文章介绍了SpringBoot 打成 jar 包后在 Linux 环境中无法直接读取 resources 目录下文件(如 application.yml、ip2region.db)的常见问题,并提供了解决方案。核心思路是使用 Spring 提供的 PathMatchingResourcePatternResolver 获取资源对象,再通过 Apache Commons IO 的 FileUtils.copyInputStreamToFile 将资源流写入本地文件,从而实现对 jar 包内部资源的读取。文中给出完整代码示例,并列出所需的核心依赖(spring‑core 与 commons‑io),帮助开发者在部署时顺利加载 resources 中的文件。

基于SpringBoot的在线招聘网站

本文介绍了一个基于SpringBoot的在线招聘系统的整体设计与功能实现。系统采用SpringBoot、MyBatisPlus、Layui、MySQL、Redis、Shiro、WebSocket、Thymeleaf等技术栈,分为游客、求职者、HR和管理员四类角色。游客可浏览首页;求职者可进行职位检索、查看详情、在线聊天、生成并分享简历链接,且支持个人信息和密码修改;HR可管理公司信息、发布/编辑/下线岗位、管理员工、与求职者聊天并点击职位或简历链接;管理员提供用户、简历、公司、岗位的全局管理、聊天记录监控及封禁违规用户等后台功能。整体实现了职位查询、即时通讯、敏感词过滤及权限控制等核心业务。