
Spring/Spring Boot
文章平均质量分 87
Spring/Spring Boot
油墨香^_^
想要敲出漂亮的代码, 就要暴露在全世界的眼睛下!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spring Boot AOP优雅记录日志
本文介绍了使用Spring AOP实现方法级日志记录的完整方案。主要包括:1)添加Spring Boot AOP依赖;2)创建@Loggable注解,支持配置日志级别、参数记录等;3)实现LoggingAspect切面,处理方法的入参、返回值、执行时间和异常;4)可选Web请求日志切面;5)使用示例展示注解在Controller和Service层的应用。该方案具有无侵入性、灵活配置、性能优化和敏感信息过滤等特点,能有效提升系统可观测性,同时保持代码整洁。原创 2022-12-05 13:59:04 · 5518 阅读 · 1 评论 -
MyBatis中SqlSessionFactory和SqlSession线程安全问题解析
MyBatis线程安全总结:SqlSessionFactory是线程安全的,可作为单例使用;而SqlSession默认非线程安全(DefaultSqlSession含非安全连接和缓存)。安全使用方式:1)与Spring集成时使用SqlSessionTemplate自动管理;2)单独使用时确保"每次请求创建并关闭",避免跨线程共享。关键在于SqlSessionFactory可全局共享,SqlSession需限制在单线程内使用。原创 2022-10-09 10:42:45 · 1354 阅读 · 0 评论 -
Spring Boot的启动原理
SpringBoot启动流程详解:从main方法开始,@SpringBootApplication复合注解开启自动配置和组件扫描。启动过程通过SpringApplication.run()方法初始化应用环境,创建并刷新应用上下文。核心步骤包括环境准备、上下文创建、自动配置触发(通过spring.factories加载配置类)和内嵌服务器启动(在refresh()方法中完成)。整个过程采用事件驱动机制,最终通过ApplicationReadyEvent通知应用就绪。自动配置基于条件注解实现按需加载,而内嵌服务原创 2022-10-09 10:41:19 · 245 阅读 · 0 评论 -
spring事件监听的原理是什么
文章摘要:Spring事件监听机制基于发布-订阅模式实现组件松耦合通信,主要由事件(ApplicationEvent)、发布者(ApplicationEventPublisher)和监听器(ApplicationListener/@EventListener)构成。工作流程包括事件发布和同步/异步监听处理,底层通过ApplicationEventMulticaster进行事件广播。支持条件监听、多事件处理和返回值发布等高级特性,适用于业务解耦、状态通知等场景,结合容器生命周期管理提供灵活的事件驱动编程方案。原创 2022-09-16 09:58:57 · 4652 阅读 · 0 评论 -
CompletableFuture并发编程详解
Java 8的CompletableFuture是实现异步编程的强大工具,它提供了丰富的异步操作和组合能力。通过runAsync和supplyAsync可创建无/有返回值的异步任务,支持自定义线程池。结果处理可采用同步获取或异步回调方式,提供thenApply、thenAccept等链式操作。多个任务可进行顺序或并行组合,使用thenCombine、allOf/anyOf等方法实现复杂流程。最佳实践包括完善的异常处理和超时控制机制。CompletableFuture优势在于链式调用、强大的任务组合能力、灵活原创 2022-09-15 10:10:37 · 237 阅读 · 0 评论 -
Java多线程并发技术详解
本文系统介绍了Java并发编程的核心知识体系,包括:1)线程基础与操作;2)线程安全与同步机制(synchronized/Lock/volatile/原子类);3)线程通信与协作工具;4)并发集合类;5)线程池配置与使用;6)异步编程(Future/CompletableFuture);7)并发设计模式;8)JMM内存模型;9)性能优化与监控;10)常见问题解决方案。文章最后给出了分阶段的学习路径建议,从基础线程操作到高级架构设计,帮助开发者系统掌握Java并发编程技能。原创 2023-03-07 10:18:39 · 900 阅读 · 0 评论 -
编程语言运行原理及模式解析
计算机语言执行分为编译型、解释型和混合型三种模式。编译型语言(如C/C++)通过编译器将源代码转换为机器码,执行效率高但跨平台性差;解释型语言(如Python)由解释器逐行翻译执行,灵活但速度较慢;混合型语言(如Java)结合两者优势,先编译为字节码再由虚拟机JIT编译执行,兼具速度和跨平台性。现代语言多采用混合模式,通过词法分析、语法树构建等核心技术实现高效执行。原创 2023-02-21 10:12:03 · 326 阅读 · 0 评论 -
Reddit核心架构与技术趋势分析
Reddit系统特点摘要:以社区驱动的内容系统为核心,通过用户投票机制形成高质量AI训练语料库,成为向科技公司授权的重要资产。平台集成AI工具(如RedditAnswers)提升用户体验,采用广告+数据授权的双轨商业模式。技术架构需处理海量数据、集成AI服务并优化搜索功能,面临用户增长与AI竞争等挑战。建议通过官方工程博客和技术社区获取更深入的架构信息。(149字)原创 2023-09-14 16:47:22 · 368 阅读 · 0 评论 -
Jenkins Pipeline post指令详解
Jenkins Pipeline中的post指令是一个关键功能,用于在流水线或阶段运行后执行特定操作。它支持多种触发条件(always、changed、fixed等),可实现异常处理、资源清理和状态通知。post可在pipeline顶层或各stage中定义,执行顺序遵循条件块匹配逻辑。最佳实践包括:合理放置post位置,选择性使用条件块,优先使用cleanup进行资源清理,并考虑封装共享库减少重复代码。该指令能有效提升CI/CD流程的可靠性和可观测性,适用于构建后处理、通知发送等场景。原创 2023-01-05 15:49:51 · 230 阅读 · 0 评论 -
Spring Boot跨域请求解决方案指南
本文介绍了SpringBoot中解决跨域问题(CORS)的多种方案。主要内容包括:1.跨域基础概念,如同源策略及CORS机制;2.主要解决方案对比,包括@CrossOrigin注解、WebMvcConfigurer全局配置、CorsFilter等;3.详细配置示例,涵盖局部和全局配置方式;4.生产环境安全建议,如环境特定配置和结合SpringSecurity的方案;5.常见问题处理,如credentials与origins冲突等。推荐使用WebMvcConfigurer进行全局配置,同时注意生产环境中应避免原创 2022-12-17 11:12:55 · 366 阅读 · 0 评论 -
SpringBoot项目中解决跨域的5种方式
SpringBoot解决跨域问题的5种方案:1.@CrossOrigin注解实现方法/类级别控制;2.WebMvcConfigurer全局配置(推荐);3.CorsFilter过滤器方式;4.WebFlux响应式配置;5.手动编写过滤器。生产环境建议通过WebMvcConfigurer进行统一管理,可配合配置文件实现灵活配置。不同方案各有优劣,全局配置兼顾统一性与灵活性,适合多数项目场景。原创 2023-02-25 10:07:02 · 1228 阅读 · 0 评论 -
SpringBoot+Nacos+Kafka简单实现微服务流编排
我们现在要调整流程移除 node2-server,我们只需要把 node1-sink 改变成 node2-sink 即可,这样我们这几个服务就可以灵活的嵌入的不同项目的数据流处理业务中,做到即插即用(当然,数据格式这些业务层面的都是需要约定好的)node2 监听 node1 处理后的数据,所以 node2 监听的 topic 为 node1 输出的 topic,node3 同理,最终 node3 处理完成后将数据发送到数据流终点。docker 能够帮助我们快速安装服务,减少再环境准备花的时间。转载 2023-02-06 10:21:54 · 272 阅读 · 0 评论 -
jenkins+gitlab+maven+docker自动化部署spring boot
构建成功后,在jenkins workspace文件目录里可看到下载下来的代码,以及在target里生成的jar包。在gitlab的项目里》设置》导入所有仓库,webhooks配置,填上上边的url,secret token。1.生成docker镜像,上传到阿里云或自搭镜像服务器,远程到主机shell进行pull,更新容器等。Jenkins 执行远程脚本(停止老版本容器,删除老版本容器,build 镜像,run 新容器)2.4 Maven配置,新增一个,去掉自动安装,选择安装的目录。转载 2023-03-09 10:52:04 · 527 阅读 · 0 评论 -
最详细的一篇SpringCloud总结
构建分布式系统不需要复杂和容易出错。Spring Cloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易入手并快速应用于生产中。”官方果然官方,介绍都这么有板有眼的。转载 2022-09-30 10:06:34 · 151 阅读 · 0 评论 -
SpringBoot 项目模板,一键生成本地工程
此外,程序中有些框架性代码,要么是诸如Controller之类的技术性框架代码,要么是基于某种架构风格的代码(比如DDD实践中的ApplicationService),这些代码一方面并不包含业务逻辑,一方面是很薄的一个抽象层(即实现相对简单),用单元测试来覆盖显得没有必要,因此笔者的观点是可以不为此编写单独的单元测试。对于后端开发而言,我选择了当前被行业大量使用的Spring Boot,基于此整理出了一套公共的、基础性的实践方式,在结合了自己的经验以及其他项目的优秀实践之后,总结出本文以飨开发者。转载 2022-09-23 10:27:50 · 532 阅读 · 0 评论 -
SpringBoot+ShardingSphereJDBC实现读写分离
本文讲述了如何使用+进行读写分离,以及利用MySQL进行一主一从的主从复制。MySQL主从复制环境准备(Docker)搭建++Druid环境测试数据库中间件可以简化对读写分离以及分库分表的操作,并隐藏底层实现细节,可以像操作单库单表那样操作多库多表,主流的设计方案主要有两种:服务端代理:需要独立部署一个代理服务,该代理服务后面管理多个数据库实例,在应用中通过一个数据源与该代理服务器建立连接,由该代理去操作底层数据库,并返回相应结果。转载 2022-09-21 10:00:23 · 3058 阅读 · 1 评论 -
Spring Boot 服务监控机制
通过上面的介绍,可以看到。转载 2022-09-16 10:14:55 · 289 阅读 · 0 评论 -
Spring Boot 超详细总结
IoC容器负责管理容器中所有bean的生命周期,而在bean生命周期的不同阶段,Spring提供了不同的扩展点来改变bean的命运。采用双亲委派模型的一个好处是保证使用不同类加载器最终得到的都是同一个对象,这样就可以保证Java 核心库的类型安全,比如,加载位于rt.jar包中的java.lang.Object类,不管是哪个加载器加载这个类,最终都是委托给顶层的BootstrapClassLoader来加载的,这样就可以保证任何的类加载器最终得到的都是同样一个Object对象。转载 2022-09-16 10:13:18 · 148 阅读 · 0 评论 -
Jenkins+Docker 一键自动化部署 SpringBoot 项目
本文章实现最简单全面的一键自动部署项目,步骤齐全,少走坑路。环境:centos7+git(gitee)简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。转载 2022-09-14 11:00:36 · 211 阅读 · 0 评论 -
NPE的处理机制
在了解InterruptedException异常之前应该了解以下的几个关于线程的一些基础知识。而且得知道什么时候会抛InterruptedException异常当阻塞方法收到中断请求的时候就会抛出InterruptedException异常线程在一定的条件下会发生状态的改变,下面是线程的一些状态新建一个线程的对象,还未调用start方法java线程中将已经准备就绪(Ready)和正在运行中(Running)的两种状态都统称为“Runnable”。准备就绪的线程会被放在线程池中等待被调用。转载 2022-09-07 09:36:01 · 296 阅读 · 0 评论 -
Spring MVC的异常处理机制
由于TestErrorController控制器中有2个带有@ExceptionHandler注解的方法,之前分析的ExceptionHandlerMethodResolver构造过程中,会构造ExceptionHandlerMethodResolver,ExceptionHandlerMethodResolver内部会有1个key分别为RuntimeException和Exception,value分别为第一个和第二个error方法的缓存。如果去掉最后1个注释掉的error方法,那么会报错。转载 2022-09-07 09:36:56 · 374 阅读 · 0 评论 -
项目一上线,遇到内存泄漏
因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。转载 2022-09-06 11:04:01 · 582 阅读 · 0 评论 -
消息重试框架 Spring-Retry 和 Guava-Retry
spring-retry 和 guava-retry 工具都是线程安全的重试,能够支持并发业务场景的重试逻辑正确性。两者都很好的将正常方法和重试方法进行了解耦,可以设置超时时间、重试次数、间隔时间、监听结果、都是不错的框架。但是明显感觉得到,guava-retry在使用上更便捷,更灵活,能根据方法返回值来判断是否重试,而Spring-retry只能根据抛出的异常来进行重试。转载 2022-09-05 09:26:23 · 172 阅读 · 0 评论 -
IDEA 使用 Docker 插件,实现一键自动化部署
首先我们要开启docker的远程连接访问。保证不是docker所在的服务器,也能够远程访问docker。Linux版的docker:修改 docker.service 文件,添加监听端口 -H tcp://0.0.0.0:2375找到 ExecStart,在最后面添加 -H tcp://0.0.0.0:2375,如下图所示转存失败重新上传取消重启docker如果我们有防火前记得添加防火墙策略或者关闭防火墙。window版docker。...转载 2022-08-29 09:41:10 · 562 阅读 · 0 评论 -
Docker+Jenkins+Nginx 自动化部署SpringBoot项目
在实际开发中,Jenkins可能不仅需要项目的部署,还需要进行开发人员的鉴权,如开发人员A只能查看部署指定项目,管理员可以查看部署所有项目,但Docker主要用于镜像构建与容器运行,无法像Jenkins一样获取github/gitlab代码,也无法进行开发人员的鉴权,所以Docker可以在Jenkins中只扮演简化部署过程的一个角色。统一配置文件,简单粗暴的方式解决端口、路径、版本等配置问题,如该项目即使运行了2个8080端口的SpringBoot容器而不需担心端口的冲突、暴露问题,一切都在容器内解决。..转载 2022-08-27 18:53:31 · 186 阅读 · 0 评论 -
10 分钟实现 Spring Boot 发生邮件功能
透过前面的进阶知识,我们知道在发送邮件前,需要先构建 SimpleMailMessage或 MimeMessage 邮件信息类来填写邮件标题、邮件内容等信息,最后提交给JavaMailSenderImpl发送邮件,这样看起来没什么问题,也能实现既定目标,但在实际使用中会出现大量零散和重复的代码,还不便于保存邮件到数据库。而对于POP协议虽然也允许客户端下载服务器邮件,但是在客户端的操作并不会同步到服务器上面的,例如在客户端收取或标记已读邮件,服务器不会同步这些操作。请保持邮件队列,两分钟后重投邮件。....转载 2022-08-19 09:54:45 · 709 阅读 · 0 评论 -
无需注解快速生成API文档,跟SpringBoot绝配
做技术管理的童鞋,往往会陷入这样一种困境:疲于奔命,到处救火填坑,沟通推进,却挤不出时间思考对团队和项目来说真正重要的事情。你有没有经历过这样的场景:1.下属老是改了接口但不维护文档,屡说不改2.后端改了接口没有及时通知前端和测试,导致下游环节的同事来投诉3. 由于团队每个角色使用的工具不同,工具之间的数据又无法兼容互通,导致一些共用的数据,每个人却要自己重复去创建、复制一遍;而一旦出现修改,每个人又要到不同软件再改一遍4.新同事入职,工具入门门槛高,导致上手困难且缓慢。...原创 2022-08-17 15:53:00 · 243 阅读 · 0 评论 -
Nginx + Spring Boot 轻松实现负载均衡
输入/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf,如果已经启动可以使用/usr/local/nginx/sbin/nginx -s reload命令进行热加载配置文件,Windows直接点击Nginx目录下的nginx.exe或者 cmd运行start nginx进行启动,如果启动了依旧可以使用nginx -s reload进行热加载。该方法保证来自相同地址的请求到达相同的服务器,除非该服务器不可用。...转载 2022-08-17 15:47:46 · 512 阅读 · 0 评论 -
20000 字的 Spring Cloud 总结,太硬核了
构建分布式系统不需要复杂和容易出错。Spring Cloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易入手并快速应用于生产中。官方果然官方,介绍都这么有板有眼的。我所理解的。...转载 2022-08-12 10:40:00 · 182 阅读 · 0 评论 -
20000 字的 Spring Cloud 总结,太硬核了
构建分布式系统不需要复杂和容易出错。Spring Cloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易入手并快速应用于生产中。官方果然官方,介绍都这么有板有眼的。我所理解的。...原创 2022-08-12 09:54:35 · 160 阅读 · 0 评论 -
从0开始搭建SpringCloud项目分布式日志架构技术栈,绝了
分布式应用必须有一套日志采集功能,目的是将分布在各个服务器节点上的应用日志文件采集到统一的服务器上,方便日志的查看。springCloud本身提供了基于elk的日志采集,但是由于使用logstash,会加大运维成本。这里将使用轻量级的方案。我们先来看一下Logback的appender的Uml图,我们可以发现两个对我们有借鉴意义的类提供了异步的日志记录DBAppender基于数据库的日志记录这两个类还是比较简单的,具体的代码我就不详细解说了,请自行查阅。...转载 2022-08-09 09:52:54 · 493 阅读 · 0 评论 -
SpringBoot+ShardingSphereJDBC实现读写分离
本文讲述了如何使用+进行读写分离,以及利用MySQL进行一主一从的主从复制。MySQL主从复制环境准备(Docker)搭建++Druid环境测试数据库中间件可以简化对读写分离以及分库分表的操作,并隐藏底层实现细节,可以像操作单库单表那样操作多库多表,主流的设计方案主要有两种:服务端代理:需要独立部署一个代理服务,该代理服务后面管理多个数据库实例,在应用中通过一个数据源与该代理服务器建立连接,由该代理去操作底层数据库,并返回相应结果。...原创 2022-08-04 18:43:29 · 676 阅读 · 0 评论 -
SpringBoot+Vue 前后端分离实现单点登录方案
什么是单点登录?单点登录全称SingleSignOn(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分,如图(不标准,只是方便理解)。httpshttpshttpshttpshttpshttps。...转载 2022-07-28 09:54:59 · 1042 阅读 · 0 评论 -
SpringBoot集成Netty实现WebSocket推送
本文介绍了在SpringBoot中集成Netty实现高性能WebSocket消息推送的方案。该方案通过搭建Netty服务器、初始化Channel管道、实现自定义消息处理器等步骤,构建了支持单播和广播的实时消息系统。关键点包括:1)使用Netty替代Spring原生WebSocket以获得更高性能;2)通过ChannelGroup和ChannelMap管理连接;3)实现心跳机制和异常处理;4)提供前端连接示例。相比传统方案,该实现具有更强的并发处理能力和更精细的控制权,适合需要处理海量连接的场景。原创 2022-07-28 09:54:03 · 559 阅读 · 0 评论 -
SpringBoot+ Dubbo + Mybatis + Nacos +Seata整合来实现Dubbo分布式事务
如果你还对SpringBoot、Dubbo、Nacos、Seata、Mybatis不是很了解的话,这里我为大家整理个它们的官网网站,如下SpringBoothttpsDubbohttpNacoshttpsSeatahttpsMyBatishttp在这里我们就不一个一个介绍它们是怎么使用和原理,详细请学习官方文档,在这里我将开始对它们进行整合,完成一个简单的案例,来让大家了解Seata来实现Dubbo分布式事务管理的基本流程。...转载 2022-07-28 09:50:30 · 1039 阅读 · 0 评论 -
推荐几个接私活的利器
基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块内容管理、支付中心、用户管理(包括第三方)、微信平台、存储系统、配置中心、日志分析、任务和通知等,支持服务治理、监控和追踪,努力为中小型企业打造全方位J2EE企业级开发解决方案。WxJava-微信开发JavaSDK,支持微信支付、开放平台、公众号、企业号/企业微信、小程序等的后端开发。部门管理配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。操作日志系统正常操作日志记录和查询;......原创 2022-07-20 14:32:55 · 303 阅读 · 0 评论 -
Spring Boot 项目配置 HTTPS 详细流程,还有谁不会
如果您正在学习SpringBoot,那么推荐一个连载多年还在继续更新的免费教程http//blog.didispace.com/spring-boot-learning-2x/我选的离线生成,需要解析验证域名,阿里云用户可选一键生成,但需要提供授权码,不推荐亚洲诚信不支持小程序!如果一直验证加载没反应就改用【一键申请】之后选择【我不是阿里云用户】,就会从网页验证解析改成软件验证,可秒过)密码就是导出证书第五步随便写的那个密码,对应上就行写啥无所谓没要求!文件名也是对应上就行没要求!...转载 2022-07-19 10:00:53 · 329 阅读 · 0 评论 -
win10 Maven 安装 | 环境配置(阿里云镜像)
修改这个setting文件找到52行,然后复制第53行代码,粘贴到注释外面(必须粘贴到注释外面,不然是无效代码),最后把中间的路径修改成你自己创建的本地仓库路径就好了。修改setting文件,找到注释标签内的mirrors,大约在145行左右,接着往mirrors标签内添加阿里云镜像,然后保存。4、编辑path,是系统变量方框中的path,编辑path,新增一条如下内容%MAVEN_HOME%\bin后确定。...转载 2022-07-18 10:03:24 · 1338 阅读 · 0 评论 -
SpringBoot+Vue 前后端分离实现单点登录方案
什么是单点登录?单点登录全称Single Sign On(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分,如图(不标准,只是方便理解)。CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点:开源的企业级单点登录解决方案。CAS Server 为需要独立部署的 Web 应用。CAS Client 支转载 2022-07-18 09:55:44 · 1617 阅读 · 0 评论 -
使用 Spring Cloud Config 统一管理配置,别再到处放配置文件了!
但是如果直接该名称的话是获取不到的,因为在配置文件名需要通过-来进行获取,如果配置文件名称没有-,那么添加了-之后,会自动进行匹配搜索。一个应用中不只是代码,还需要连接资源和其它应用,经常有很多需要外部设置的项去调整应用行为,如切换不同的数据库,设置功能开关等。从配置变化的通知机制上看,如果有100个应用节点,都依赖于统一配置,如果修改了配置,只想让某几个节点"灰度"更新配置,的统一管理界面,既然把配置都当成git之类的源码来看待了,git的管理界面,就是配置的管理界面。如果是是本地获取的话,则无用。...转载 2022-07-15 16:02:23 · 568 阅读 · 0 评论