![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring/Spring Boot
文章平均质量分 86
Spring/Spring Boot
油墨香^_^
想要敲出漂亮的代码, 就要暴露在全世界的眼睛下!
展开
-
SpringBoot项目中解决跨域的5种方式
当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域img首先编写一个过滤器,可以起名字为MyCorsFilter.java@Component在web.xml中配置这个过滤器,使其生效-- 跨域访问 START-->-- 跨域访问 END -->转载 2023-02-25 10:07:02 · 1125 阅读 · 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 · 145 阅读 · 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 · 424 阅读 · 0 评论 -
最详细的一篇SpringCloud总结
构建分布式系统不需要复杂和容易出错。Spring Cloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易入手并快速应用于生产中。”官方果然官方,介绍都这么有板有眼的。转载 2022-09-30 10:06:34 · 103 阅读 · 0 评论 -
SpringBoot 项目模板,一键生成本地工程
此外,程序中有些框架性代码,要么是诸如Controller之类的技术性框架代码,要么是基于某种架构风格的代码(比如DDD实践中的ApplicationService),这些代码一方面并不包含业务逻辑,一方面是很薄的一个抽象层(即实现相对简单),用单元测试来覆盖显得没有必要,因此笔者的观点是可以不为此编写单独的单元测试。对于后端开发而言,我选择了当前被行业大量使用的Spring Boot,基于此整理出了一套公共的、基础性的实践方式,在结合了自己的经验以及其他项目的优秀实践之后,总结出本文以飨开发者。转载 2022-09-23 10:27:50 · 392 阅读 · 0 评论 -
SpringBoot+ShardingSphereJDBC实现读写分离
本文讲述了如何使用+进行读写分离,以及利用MySQL进行一主一从的主从复制。MySQL主从复制环境准备(Docker)搭建++Druid环境测试数据库中间件可以简化对读写分离以及分库分表的操作,并隐藏底层实现细节,可以像操作单库单表那样操作多库多表,主流的设计方案主要有两种:服务端代理:需要独立部署一个代理服务,该代理服务后面管理多个数据库实例,在应用中通过一个数据源与该代理服务器建立连接,由该代理去操作底层数据库,并返回相应结果。转载 2022-09-21 10:00:23 · 2733 阅读 · 1 评论 -
Spring Boot 服务监控机制
通过上面的介绍,可以看到。转载 2022-09-16 10:14:55 · 203 阅读 · 0 评论 -
Spring Boot 超详细总结
IoC容器负责管理容器中所有bean的生命周期,而在bean生命周期的不同阶段,Spring提供了不同的扩展点来改变bean的命运。采用双亲委派模型的一个好处是保证使用不同类加载器最终得到的都是同一个对象,这样就可以保证Java 核心库的类型安全,比如,加载位于rt.jar包中的java.lang.Object类,不管是哪个加载器加载这个类,最终都是委托给顶层的BootstrapClassLoader来加载的,这样就可以保证任何的类加载器最终得到的都是同样一个Object对象。转载 2022-09-16 10:13:18 · 96 阅读 · 0 评论 -
Jenkins+Docker 一键自动化部署 SpringBoot 项目
本文章实现最简单全面的一键自动部署项目,步骤齐全,少走坑路。环境:centos7+git(gitee)简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。转载 2022-09-14 11:00:36 · 157 阅读 · 0 评论 -
NPE的处理机制
在了解InterruptedException异常之前应该了解以下的几个关于线程的一些基础知识。而且得知道什么时候会抛InterruptedException异常当阻塞方法收到中断请求的时候就会抛出InterruptedException异常线程在一定的条件下会发生状态的改变,下面是线程的一些状态新建一个线程的对象,还未调用start方法java线程中将已经准备就绪(Ready)和正在运行中(Running)的两种状态都统称为“Runnable”。准备就绪的线程会被放在线程池中等待被调用。转载 2022-09-07 09:36:01 · 220 阅读 · 0 评论 -
Spring MVC的异常处理机制
由于TestErrorController控制器中有2个带有@ExceptionHandler注解的方法,之前分析的ExceptionHandlerMethodResolver构造过程中,会构造ExceptionHandlerMethodResolver,ExceptionHandlerMethodResolver内部会有1个key分别为RuntimeException和Exception,value分别为第一个和第二个error方法的缓存。如果去掉最后1个注释掉的error方法,那么会报错。转载 2022-09-07 09:36:56 · 292 阅读 · 0 评论 -
项目一上线,遇到内存泄漏
因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。转载 2022-09-06 11:04:01 · 492 阅读 · 0 评论 -
消息重试框架 Spring-Retry 和 Guava-Retry
spring-retry 和 guava-retry 工具都是线程安全的重试,能够支持并发业务场景的重试逻辑正确性。两者都很好的将正常方法和重试方法进行了解耦,可以设置超时时间、重试次数、间隔时间、监听结果、都是不错的框架。但是明显感觉得到,guava-retry在使用上更便捷,更灵活,能根据方法返回值来判断是否重试,而Spring-retry只能根据抛出的异常来进行重试。转载 2022-09-05 09:26:23 · 126 阅读 · 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 · 477 阅读 · 0 评论 -
Docker+Jenkins+Nginx 自动化部署SpringBoot项目
在实际开发中,Jenkins可能不仅需要项目的部署,还需要进行开发人员的鉴权,如开发人员A只能查看部署指定项目,管理员可以查看部署所有项目,但Docker主要用于镜像构建与容器运行,无法像Jenkins一样获取github/gitlab代码,也无法进行开发人员的鉴权,所以Docker可以在Jenkins中只扮演简化部署过程的一个角色。统一配置文件,简单粗暴的方式解决端口、路径、版本等配置问题,如该项目即使运行了2个8080端口的SpringBoot容器而不需担心端口的冲突、暴露问题,一切都在容器内解决。..转载 2022-08-27 18:53:31 · 133 阅读 · 0 评论 -
10 分钟实现 Spring Boot 发生邮件功能
透过前面的进阶知识,我们知道在发送邮件前,需要先构建 SimpleMailMessage或 MimeMessage 邮件信息类来填写邮件标题、邮件内容等信息,最后提交给JavaMailSenderImpl发送邮件,这样看起来没什么问题,也能实现既定目标,但在实际使用中会出现大量零散和重复的代码,还不便于保存邮件到数据库。而对于POP协议虽然也允许客户端下载服务器邮件,但是在客户端的操作并不会同步到服务器上面的,例如在客户端收取或标记已读邮件,服务器不会同步这些操作。请保持邮件队列,两分钟后重投邮件。....转载 2022-08-19 09:54:45 · 650 阅读 · 0 评论 -
无需注解快速生成API文档,跟SpringBoot绝配
做技术管理的童鞋,往往会陷入这样一种困境:疲于奔命,到处救火填坑,沟通推进,却挤不出时间思考对团队和项目来说真正重要的事情。你有没有经历过这样的场景:1.下属老是改了接口但不维护文档,屡说不改2.后端改了接口没有及时通知前端和测试,导致下游环节的同事来投诉3. 由于团队每个角色使用的工具不同,工具之间的数据又无法兼容互通,导致一些共用的数据,每个人却要自己重复去创建、复制一遍;而一旦出现修改,每个人又要到不同软件再改一遍4.新同事入职,工具入门门槛高,导致上手困难且缓慢。...原创 2022-08-17 15:53:00 · 128 阅读 · 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 · 417 阅读 · 0 评论 -
20000 字的 Spring Cloud 总结,太硬核了
构建分布式系统不需要复杂和容易出错。Spring Cloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易入手并快速应用于生产中。官方果然官方,介绍都这么有板有眼的。我所理解的。...转载 2022-08-12 10:40:00 · 124 阅读 · 0 评论 -
20000 字的 Spring Cloud 总结,太硬核了
构建分布式系统不需要复杂和容易出错。Spring Cloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易入手并快速应用于生产中。官方果然官方,介绍都这么有板有眼的。我所理解的。...原创 2022-08-12 09:54:35 · 99 阅读 · 0 评论 -
从0开始搭建SpringCloud项目分布式日志架构技术栈,绝了
分布式应用必须有一套日志采集功能,目的是将分布在各个服务器节点上的应用日志文件采集到统一的服务器上,方便日志的查看。springCloud本身提供了基于elk的日志采集,但是由于使用logstash,会加大运维成本。这里将使用轻量级的方案。我们先来看一下Logback的appender的Uml图,我们可以发现两个对我们有借鉴意义的类提供了异步的日志记录DBAppender基于数据库的日志记录这两个类还是比较简单的,具体的代码我就不详细解说了,请自行查阅。...转载 2022-08-09 09:52:54 · 407 阅读 · 0 评论 -
SpringBoot+ShardingSphereJDBC实现读写分离
本文讲述了如何使用+进行读写分离,以及利用MySQL进行一主一从的主从复制。MySQL主从复制环境准备(Docker)搭建++Druid环境测试数据库中间件可以简化对读写分离以及分库分表的操作,并隐藏底层实现细节,可以像操作单库单表那样操作多库多表,主流的设计方案主要有两种:服务端代理:需要独立部署一个代理服务,该代理服务后面管理多个数据库实例,在应用中通过一个数据源与该代理服务器建立连接,由该代理去操作底层数据库,并返回相应结果。...原创 2022-08-04 18:43:29 · 631 阅读 · 0 评论 -
SpringBoot+Vue 前后端分离实现单点登录方案
什么是单点登录?单点登录全称SingleSignOn(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分,如图(不标准,只是方便理解)。httpshttpshttpshttpshttpshttps。...转载 2022-07-28 09:54:59 · 922 阅读 · 0 评论 -
SpringBoot+Netty+WebSocket 实现消息推送
2.其次,改造MyWebSocketHandler的channelRead方法,首次连接会是一个FullHttpRequest类型,可以通过FullHttpRequest.uri()获取完整ws的URL地址,之后接受信息的话,会是一个TextWebSocketFrame类型。Netty是一个利用Java的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的API的客户端/服务器框架。启动的NettyServer,这里进行配置。主要是连接ws,发送消息,以及消息反馈。4.改造后控制台输出情况。...转载 2022-07-28 09:54:03 · 507 阅读 · 0 评论 -
SpringBoot+ Dubbo + Mybatis + Nacos +Seata整合来实现Dubbo分布式事务
如果你还对SpringBoot、Dubbo、Nacos、Seata、Mybatis不是很了解的话,这里我为大家整理个它们的官网网站,如下SpringBoothttpsDubbohttpNacoshttpsSeatahttpsMyBatishttp在这里我们就不一个一个介绍它们是怎么使用和原理,详细请学习官方文档,在这里我将开始对它们进行整合,完成一个简单的案例,来让大家了解Seata来实现Dubbo分布式事务管理的基本流程。...转载 2022-07-28 09:50:30 · 943 阅读 · 0 评论 -
推荐几个接私活的利器
基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块内容管理、支付中心、用户管理(包括第三方)、微信平台、存储系统、配置中心、日志分析、任务和通知等,支持服务治理、监控和追踪,努力为中小型企业打造全方位J2EE企业级开发解决方案。WxJava-微信开发JavaSDK,支持微信支付、开放平台、公众号、企业号/企业微信、小程序等的后端开发。部门管理配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。操作日志系统正常操作日志记录和查询;......原创 2022-07-20 14:32:55 · 218 阅读 · 0 评论 -
Spring Boot 项目配置 HTTPS 详细流程,还有谁不会
如果您正在学习SpringBoot,那么推荐一个连载多年还在继续更新的免费教程http//blog.didispace.com/spring-boot-learning-2x/我选的离线生成,需要解析验证域名,阿里云用户可选一键生成,但需要提供授权码,不推荐亚洲诚信不支持小程序!如果一直验证加载没反应就改用【一键申请】之后选择【我不是阿里云用户】,就会从网页验证解析改成软件验证,可秒过)密码就是导出证书第五步随便写的那个密码,对应上就行写啥无所谓没要求!文件名也是对应上就行没要求!...转载 2022-07-19 10:00:53 · 278 阅读 · 0 评论 -
Spring Boot 项目配置 HTTPS 详细流程,还有谁不会?
如果您正在学习SpringBoot,那么推荐一个连载多年还在继续更新的免费教程http//blog.didispace.com/spring-boot-learning-2x/我选的离线生成,需要解析验证域名,阿里云用户可选一键生成,但需要提供授权码,不推荐亚洲诚信不支持小程序!如果一直验证加载没反应就改用【一键申请】之后选择【我不是阿里云用户】,就会从网页验证解析改成软件验证,可秒过)密码就是导出证书第五步随便写的那个密码,对应上就行写啥无所谓没要求!文件名也是对应上就行没要求!...转载 2022-07-18 10:04:36 · 107 阅读 · 0 评论 -
win10 Maven 安装 | 环境配置(阿里云镜像)
修改这个setting文件找到52行,然后复制第53行代码,粘贴到注释外面(必须粘贴到注释外面,不然是无效代码),最后把中间的路径修改成你自己创建的本地仓库路径就好了。修改setting文件,找到注释标签内的mirrors,大约在145行左右,接着往mirrors标签内添加阿里云镜像,然后保存。4、编辑path,是系统变量方框中的path,编辑path,新增一条如下内容%MAVEN_HOME%\bin后确定。...转载 2022-07-18 10:03:24 · 1257 阅读 · 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 · 1336 阅读 · 0 评论 -
使用 Spring Cloud Config 统一管理配置,别再到处放配置文件了!
但是如果直接该名称的话是获取不到的,因为在配置文件名需要通过-来进行获取,如果配置文件名称没有-,那么添加了-之后,会自动进行匹配搜索。一个应用中不只是代码,还需要连接资源和其它应用,经常有很多需要外部设置的项去调整应用行为,如切换不同的数据库,设置功能开关等。从配置变化的通知机制上看,如果有100个应用节点,都依赖于统一配置,如果修改了配置,只想让某几个节点"灰度"更新配置,的统一管理界面,既然把配置都当成git之类的源码来看待了,git的管理界面,就是配置的管理界面。如果是是本地获取的话,则无用。...转载 2022-07-15 16:02:23 · 453 阅读 · 0 评论 -
SpringCloud 优雅下线+灰度发布
# 前言在生产环境中,如何保证在服务升级的时候,不影响用户的体验,这个是一个非常重要的问题。如果在我们升级服务的时候,会造成一段时间内的服务不可用,这就是不够优雅的。那什么是优雅的呢?主要就是指在服务升级的时候,不中断整个服务,让用户无感知,进而不会影响用户的体验,这就是优雅的。实际上,优雅下线是目标,而不是手段,它是一个相对的概念,例如kill PID和kill -9 PID都是暴力杀死服务,相对于kill -9 PID来说,kill PID就是优雅的。但如果单独拿kill PID出来说,我们能说它是优雅转载 2022-07-14 09:36:08 · 168 阅读 · 0 评论 -
SpringBoot 项目打成 .exe 程序,实战来了!
# 前言近期做了一个前后端合并的spring boot项目,但是要求达成exe文件,提供给不懂电脑的小白安装使用,就去研究了半天,踩了很多坑,写这篇文章,是想看到这篇文章的人,按照我的步骤走,能少踩坑。# 准备准备工作:1.一个jar包,没有bug能正常启动的jar包2.exe4j,一个将jar转换成exe的工具链接:https://pan.baidu.com/s/1gt6wen7BKto8esE70XnxwQ提取码:vhoy注册码:L-g782dn2d-1f1yqxx1rv1sqd3.inno setup转载 2022-07-07 17:35:08 · 2225 阅读 · 1 评论 -
Springboot + Vue + shiro 实现前后端分离、权限控制
一、前后端分离思想前端从后端剥离,形成一个前端工程,前端只利用Json来和后端进行交互,后端不返回页面,只返回Json数据。前后端之间完全通过public API约定。二、后端 SpringbootSpringboot就不再赘述了,Controller层返回Json数据。@RequestMapping(value="/add",method=RequestMethod.POST)@ResponseBodypublicJSONResultaddClient(...转载 2022-05-13 19:20:47 · 2615 阅读 · 0 评论 -
Java开发的 20+ 种 Spring 常用注解
注解本身没有功能的,就和xml一样。注解和xml都是一种元数据,元数据即解释数据的数据,这就是所谓配置。本文主要罗列Spring|SpringMVC相关注解的简介。Spring部分1.声明bean的注解 @Component 组件,没有明确的角色 @Service 在业务逻辑层使用(service层) @Repository 在数据访问层使用(dao层) @Controller 在展现层使用,控制器的声明(C) 2.注入bean的注解 @Autowi转载 2022-05-16 09:27:46 · 132 阅读 · 0 评论