自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 收藏
  • 关注

原创 Spring Cloud 2023 新特性 同步网关

打开 Spring Cloud Gateway 的官网,发现针对 MVC 支持的部分没有提供过多的参考资料。不过按笔者看来完全不需要参考其他资料,只要按照 Spring MVC 项目中如何编写 Filter 的方法,就可以实现 Gateway 的开发。注意指定自定义 Filter 的顺序,Spring Cloud Gateway Filter 执行顺序与 WebFlux Filter 保持一致。

2023-10-11 22:34:13 366

原创 SpringBoot 3.0 新特性,内置声明式HTTP客户端

声明式 http 客户端主旨是使得编写 java http 客户端更容易。为了贯彻这个理念,采用了通过处理注解来自动生成请求的方式(官方称呼为声明式、模板化)。通过声明式 http 客户端实现我们就可以在 java 中像调用一个本地方法一样完成一次 http 请求,大大减少了编码成本,同时提高了代码可读性。举个例子,如果想调用 /tenants 的接口,只需要定义如下的接口类即可}Spring 会在运行时提供接口的调用的具体实现,如上请求我们可以如 Java 方法一样调用。

2022-12-01 11:17:32 1800 2

原创 一文入门 Spring Cloud Tencent

Spring Cloud Tencent 是什么Spring Cloud Tencent 是腾讯开源的一站式微服务解决方案。Spring Cloud Tencent 实现了 Spring Cloud 标准微服务 SPI,开发者可以基于 Spring Cloud Tencent 快速开发 Spring Cloud 微服务架构应用。Spring Cloud Tencent 的核心依托腾讯开源的一站式服务发现与治理平台 Polarismesh ,实现各种分布式微服务场景。Spring Cloud Tencen

2022-06-22 10:18:51 537 1

原创 spring-authorization-server令牌放发源码解析

Token 生成全流程POST /auth/oauth2/token?grant_type=password&scope=server HTTP/1.1Host: pig-gateway:9999Authorization: Basic dGVzdDp0ZXN0Content-Type: application/x-www-form-urlencodedContent-Length: 32username=admin&password=YehdBPev⓪ 网关前置处理验证

2022-06-12 21:25:46 1176

原创 拥抱Spring全新OAuth解决方案

第一个工程化

2022-06-07 15:57:16 961

原创 Spring SAS 0.2.0 上手教程

正式上市 || SAS 0.2.0 上手教程背景Spring Authorization Server (以下简称 SAS)是 Spring 团队最新开发适配 OAuth 协议的授权服务器项目,旨在替代原有的 Spring Security OAuth Server。经过半年的开发和孵化,目前已经发布了 0.2.0 版本,已支持授权码、客户端、刷新、注销等 OAuth 协议。目前 SAS 项目已经迁移至官方正式仓库维护,成为官方的正式子项目。笔者年初 《新年开箱 | Spring

2021-08-21 12:23:00 869 1

原创 阿里开源工作流框架 compileflow 上手使用

compileflow 是什么compileflow 是一个非常轻量、高性能、可集成、可扩展的流程引擎。compileflow Process 引擎是淘宝工作流 TBBPM 引擎之一,是专注于纯内存执行,无状态的流程引擎,通过将流程文件转换生成 java 代码编译执行,简洁高效。当前是阿里业务中台交易等多个核心系统的流程引擎。compileflow 能让开发人员通过流程编辑器设计自己的业务流程,将复杂的业务逻辑可视化,为业务设计人员与开发工程师架起了一座桥梁。功能列表高性能:通过将流程文件转换生

2021-07-15 17:27:29 5073 5

原创 Govern Service || 新的服务发现、配置管理实现

Govern Service 是一个轻量级、低成本的服务注册、服务发现、 配置服务 SDK,通过使用现有基础设施中的 Redis (相信你已经部署了 Redis),不用给运维部署带来额外的成本与负担。 借助于 Redis 的高性能, Govern Service 提供了超高 TPS&QPS。Govern Service 结合本地进程缓存策略 + Redis PubSub,实现实时进程缓存刷新,兼具无与伦比的 QPS 性能、进程缓存与 Redis 的实时一致性。服务发现maven 依赖,如下服

2021-05-19 09:37:07 216

原创 SpringBoot 2.5 版本功能前瞻

前言目前 Spring Boot 2.5.0 RC1 已经发布,其开发团队表示将在 5 月 20 日正式 GA。我们梳理了一下大家比较关系和感兴趣的一些变更。一、 运行端点变更Secure info endpoint(安全的 info 端点)默认情况下/info端点不再对 web 公开。此外,如果引用了 Spring Security,则默认情况下端点需要经过身份验证才能访问。优雅关机支持 GET 请求我们流量请求到此接口执行业务逻辑的时候,若服务端此时执行关机 (kill),Sprin

2021-04-27 10:25:41 4652

原创 干掉 Feign,Spring Cloud Square 组件发布

Spring Cloud Square 是什么谈起 Spring Cloud 生态大家一定对 Feign 不陌生,如下图所示,Feign 可以把底层(okhttp、httpclient)Rest 的请求进行隐藏,伪装成类似 SpringMVC 的 Controller 一样。你不用再自己拼接 url,拼接参数等等操作,一切都交给 Feign 去做。使用 Feign 调用 API 就像调用本地方法一样,从避免了调用目标微服务时,需要不断的解析/封装 json 数据的繁琐。Spring Cloud Squ

2021-04-19 09:38:15 1385

原创 Java 9-15 ,语法新特性汇总

环境说明OpenJdk 15开发工具 IDEA 2020.3.2var 类型推断 | since jdk10var 是 Java10 版本中新出的特性,用它来定义局部变量。var 不是关键字,相当于一种动态类型,编译器根据变量所赋的值来推断类型。所以必须在定义变量的时候赋初始值。 @Test public void testJDK10VarLocalVariable(){ var num1 = 1000; var num2 = 1.001; var str = "hell

2021-04-02 09:44:32 318

原创 火爆外网的 DGS 框架使用

Netflix 已开放其 Domain Graph Service(DGS)框架的源代码 ,该框架是为了方便整合 GraphQL 使用,用于简化 GraphQL 的实现。GraphQL 主要是作用于数据接口,比如前端后端交互。无需定义或修改后台 Controller、Service 等业务代码即可实现灵活的数据变更,客户端可以自由获取服务端事先定义好的数据,提高了交互接口的灵活性组件依赖graphql-dgs-spring-boot-starter<dependency> .

2021-03-01 17:21:35 1090 1

原创 Spring Authorization Server 全新授权服务器整合使用

前言Spring Authorization Server 是 Spring 团队最新开发适配 OAuth 协议的授权服务器项目,旨在替代原有的 Spring Security OAuth经过半年的开发和孵化,目前已经发布了 0.1.0 版本,初步支持授权码、客户端、刷新、注销等 OAuth 协议本文环境基于 Spring Boot 2.4.2 && authorization-server 0.1.0Server 搭建1. maven 依赖<!--oauth2

2021-02-23 09:45:15 12200 4

原创 微信下线模板消息,订阅通知如何使用?

背景微信于今日宣布 《服务号模板消息能力调整》,原先的模板消息能力将于 2021 年 4 月 30 日 24:00 下线,届时将无法使用此接口发送模板消息。简单来讲,向小程序开发看齐,不能直接通过公众号向已订阅的用户推送模板消息。例如:改版后即使订阅了 招商银行信用卡中心,也无法通过公众号收到 动账、还款的消息提醒。笔者从事行业对于模板消息属于强需求,所以整理变更订阅通知 的改造和实现过程供大家参考。名称解释一次订阅指用户订阅一次,服务号可不限时间地下发一条对应的订阅通知;长期

2021-02-01 11:47:18 4646 6

原创 Spring Boot 快速迁移至 Quarkus

Quarkus 是一个目前非常火的 Java 应用开发框架,定位是轻量级的微服务框架。,Quarkus 提供了优秀的容器化整合能力,相较于传统开发框架(Spring Boot)有着更快的启动速度、更小的内存消耗、更短的服务响应。本文将演示将 SpringBoot 迁移至 QuarkusSpring Boot 示例程序使用 JPA 完成 数据库的增删改查操作,基础代码如下maven 依赖<dependency> <groupId>org.springframewor

2021-01-21 10:46:58 983

原创 SpringCloud LoadBalancer灰度策略实现

如何使用 Spring Cloud 2020 中重磅推荐的负载均衡器 Spring Cloud LoadBalancer (下文简称 SCL),如何扩展负载均衡策略? 你将从本文中获取到答案快速上手 SCL如果项目中想使用 SCL,则仅需要添加如下 maven 依赖即可<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-s

2021-01-15 10:11:36 2273

原创 『Spring Boot 2.4新特性』减少95%内存占用

节省 95%的内存占用,减少 80%的启动耗时。GraalVM 是一种高性能的虚拟机,它可以显著的提高程序的性能和运行效率,非常适合微服务。最近比较火的 Java 框架 Quarkus 默认支持 GraalVM下图为 Quarkus 和传统框架(SpringBoot) 等对比图,更快的启动速度、更小的内存消耗、更短的服务响应。Spring Boot 2.4 开始逐步提供对 GraalVM 的支持,旨在提升上文所述的 启动、内存、响应的使用体验。安装 GraalVM目前官方社区版本最新为 20

2020-12-23 14:19:41 1628

原创 「Spring Boot 2.4 新特性」启动耗时详细监控

背景Spring Boot 项目随着项目开发过程中引入中间件数量的增加,启动耗时逐渐增加。笔者在 《Spring Boot 2.4.0 正式 GA,全面拥抱云原生》文章评论下发现了Spring 生态复杂,非官方插件并未严格按官方标准实现。例如 @Configuration 注解提供了 proxyBeanMethods 属性默认开启,建议常见情况手动关闭提高性能。笔者在观察大部分非官方插件 stater 并未引入此属性。诸如此类的优化策略很多(建议翻一下笔者历史博客),但往往被开发者忽略,导致使用

2020-12-09 10:55:17 769 1

原创 「Spring Boot 2.4 新特性」启动耗时详细监控

背景Spring Boot 项目随着项目开发过程中引入中间件数量的增加,启动耗时逐渐增加。笔者在 《Spring Boot 2.4.0 正式 GA,全面拥抱云原生》文章评论下发现了Spring 生态复杂,非官方插件并未严格按官方标准实现。例如 @Configuration 注解提供了 proxyBeanMethods 属性默认开启,建议常见情况手动关闭提高性能。笔者在观察大部分非官方插件 stater 并未引入此属性。诸如此类的优化策略很多(建议翻一下笔者历史博客),但往往被开发者忽略,导致使用

2020-12-09 10:48:51 1868 2

原创 Spring Boot XSS 攻击过滤插件使用

XSS 是什么XSS(Cross Site Scripting)攻击全称跨站脚本攻击,为了不与 CSS(Cascading Style Sheets)名词混淆,故将跨站脚本攻击简称为 XSS,XSS 是一种常见 web 安全漏洞,它允许恶意代码植入到提供给其它用户使用的页面中。xss 攻击流程简单 xss 攻击示例若网站某个表单没做相关的处理,用户提交相关恶意代码,浏览器会执行相关的代码。解决方案XSS 过滤说明对表单绑定的字符串类型进行 xss 处理。对 json 字符串数据进行

2020-12-03 09:25:19 1192 1

原创 「SpringBoot2.4新特性」jar自动瘦身

自动分析瘦身Spring Boot 项目最终构建处理 JAR 包大小一直是个诟病,需要把所有依赖包内置最终输出可运行的 jar。 当然可以使用其他的插件扩展 实现依赖 JAR 和 可运行 jar 分离可以参考 slot-maven-plugin, 但此种方法治标不治本并不能减少原有依赖的 JAR 的大小。Spring Boot 2.4 提供对构建输出 JAR 分析自动瘦身的功能,自动在构建输出可运行 JAR 时删除 empty starter dependencies效果展示先来分别基于 Sprin

2020-11-20 09:14:28 4655 3

原创 Spring Boot 2.4 新特性,全新的Cron表达式处理机制

说起 cron 表达式大家一定不陌生,我们常用来作为定时任务执行策略规则。 在 Spring Boot 框架中 cron 表达式主要配合 @Scheduled 注解在应用程序中使用。 在 Spring Boot 2.4 (既 Spring 5.3)以后,引入了 CronExpression表达式处理器来替代原有的 CronSequenceGenerator。为什么要替代原有的 CronSequenceGenerator ? 此处理器是基于 java.util.Calendar局限性比较大,无法完成las

2020-11-17 09:25:57 828

原创 「Spring Boot 2.4 新特性」一键构建Docker镜像

背景在我们开发过程中为了支持 Docker 容器化,一般使用 Maven 编译打包然后生成镜像,能够大大提供上线效率,同时能够快速动态扩容,快速回滚,着实很方便。docker-maven-plugin 插件就是为了帮助我们在 Maven 工程中,通过简单的配置,自动生成镜像并推送到仓库中。spotify 、fabric8这里主要使用的主要是如下两种插件 spotify 、fabric8 , ... -配置通过 xml 定义出 Dockerfile 或者挂载外部 Dockerfile 通过调用 Doc

2020-11-17 09:21:05 628

原创 Spring Boot 接口幂等插件使用

幂等概述幂等性原本是数学上的概念,即使公式:f(x)=f(f(x)) 能够成立的数学性质。用在编程领域,则意为对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的。幂等性是分布式系统设计中十分重要的概念,具有这一性质的接口在设计时总是秉持这样的一种理念:调用接口发生异常并且重复尝试时,总是会造成系统所无法承受的损失,所以必须阻止这种现象的发生。实现幂等的方式很多,目前基于请求令牌机制适用范围较广。其核心思想是为每一次操作生成一个唯一性的凭证,也就是 token。一个 t

2020-11-09 11:47:36 715

原创 Druid 监控分布式解决方案

什么是 Druid MonitorDruid 是一个非常强大的数据库连接池,但是它的强大并不仅仅体现在作为一个高性能连接池加快数据访问上和连接管理上,它内置了一个强大的监控工具:Druid Monitor。不仅可以监控数据源和慢查询,还可以监控 Web 应用、URI 监控、Session 监控、Spring 监控等。ip:port/druid/sql.html什么是 Druid Admin如上文所述, Druid Monitor 提供强大的监控能力,但目前仅是针对对单个服务实例的监控。 在

2020-10-21 12:04:20 1646 5

原创 OAuth 2.0 单元测试解决方案

为什么需要单元测试单元测试拥有保证代码质量、尽早发现软件 Bug、简化调试过程、促进变化并简化集成、使流程更灵活等优势。单元测试是针对代码单元的独立测试,核心是“独立”,优势来源也是这种独立性,而所面临的不足也正是因为其独立性:既然是“独立”,就难以测试与其他代码和依赖环境的相互关系。单元测试与系统测试是互补而非代替关系。单元测试的优势,正是系统测试的不足,单元测试的不足,又恰是系统测试的优势。不能将单元测试当做解决所有问题的万金油,而需理解其优势与不足,扬长避短,与系统测试相辅相成,实现测试的最大效益。

2020-10-12 10:49:41 437

原创 「性能提升」扩展 Spring Cache 支持多级缓存

为什么多级缓存缓存的引入是现在大部分系统所必须考虑的redis 作为常用中间件,虽然我们一般业务系统(毕竟业务量有限)不会遇到如下图 在随着 data-size 的增大和数据结构的复杂的造成性能下降,但网络 IO 消耗会成为整个调用链路中不可忽视的部分。尤其在 微服务架构中,一次调用往往会涉及多次调用 例如pig oauth2.0 的 client 认证Caffeine 来自未来的本地内存缓存,性能比如常见的内存缓存实现性能高出不少详细对比。综合所述:我们需要构建 L1 Caffeine

2020-09-28 08:30:43 742

原创 如何以源码形式运行Nacos Server

官方标准运行方式下载解压可运行包curl -O https://github.com/alibaba/nacos/releases/download/1.3.2/nacos-server-1.3.2.tar.gztar -zxvf nacos-server-1.3.2.tar.gzcd nacos/bin执行运行# Linux/Unix/Mac 启动命令(standalone代表着单机模式运行,非集群模式):sh startup.sh -m standalone# 如果您使用的是ubun

2020-09-23 14:17:57 2474 3

原创 Spring Boot 2.4 配置文件将加载机制大变化

Spring Boot 2.4.0.M2 刚刚发布,它对 application.properties 和 application.yml 文件的加载方式进行重构。如果应用程序仅使用单个 application.properties 或 application.yml 作为配置文件,那么可能感受不到任何区别。但是如果您的应用程序使用更复杂的配置(例如,Spring Cloud 配置中心等),则需要来了解更改的内容以及原因。为什么要进行这些更改随着最新版本 Spring Boot 发布,Spring 一直

2020-08-21 09:20:24 9706 2

原创 还在使用MyBatis Generator?试试这个工具

代码生成在企业软件开发过程中,大多数时间都是面向数据库表的增删改查开发。通过通用的增删改查代码生成器,可以有效的提高效率,降低成本;把有规则的重复性劳动让机器完成,解放开发人员。MyBatis GeneratorMyBatis Generator 是 MyBatis 提供的一个代码生成工具可以帮我们生成表对应的持久化对象(po)、操作数据库的接口(dao)、CRUD sql 的 xml(mapper)。<plugin> <groupId>org.mybatis.

2020-08-18 08:46:33 526

原创 「最强」Lettuce 已支持 Redis6 客户端缓存

Redis 客户端缓存缓存的解决方案一般有两种:【L1】 内存缓存(如 Caffeine、Ehcache) —— 速度快,进程内可用,但重启缓存丢失,出现缓存雪崩的问题。【L2】集中式缓存(如 Redis)—— 可同时为多节点提供服务,但高并发下,带宽成为瓶颈。业内有很多开源框架来解决以上问题,既能有 L1 速度,并且拥有 L2 集群态。如下J2Cache 两级缓存框架hotkey 热点数据实时同步在 redis 6.0 版本中,已经默认支持了客户端缓存功能,Java 中主流的连接客户端 le

2020-08-10 10:06:30 1810 1

原创 「一站式」兼容所有云厂商文件存储Spring Boot 实现

背景在互联网发展的今天,近乎所有的云厂商都提供对象存储服务。一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。当我们在使用对应云厂商产品的时候,只需要引入对应尝试提供的 SDK ,根据其开发文档实现即可。但是当我们接入的云厂商较多(或者能够保证接口水平迁移时),我们要根据目标厂商接口破坏性修改。如下提供了几家厂商接口 SDK 上传实例:阿里云// Endpoint以杭州为例,其它Region请按实际情况填写。Stri

2020-08-06 09:34:04 767

原创 还在手动整理数据库文档?试试这个工具

简介在企业级开发中、我们经常会有编写数据库表结构文档的时间付出,从业以来,待过几家企业,关于数据库表结构文档状态:要么没有、要么有、但都是手写、后期运维开发,需要手动进行维护到文档中,很是繁琐、如果忘记一次维护、就会给以后工作造成很多困扰、无形中制造了很多坑留给自己和后人,于是需要一个插件工具 screw来维护。screw 特点简洁、轻量、设计良好。不需要 powerdesigner 这种重量的建模工具多数据库支持 。支持市面常见的数据库类型 MySQL、Oracle、SqlServer多种格.

2020-07-28 06:55:17 2237

原创 「新特性」Spring Boot 全局懒加载机制了解一下

关于延迟加载在 Spring 中,默认情况下所有定的 bean 及其依赖项目都是在应用启动时创建容器上下文是被初始化的。测试代码如下:@Slf4j@Configurationpublic class DemoConfig { public DemoConfig() { log.warn(" > > > demoConfig 被初始化 > > >"); }}启动应用日志:[ main] o

2020-07-16 06:29:21 795

原创 配置动态刷新RefreshScope注解使用局限性(一)

在 Spring Cloud 体系的项目中,配置中心主要用于提供分布式的配置管理,其中有一个重要的注解:@RefreshScope,如果代码中需要动态刷新配置,在需要的类上加上该注解就行。本文分享一下笔者遇到与 @ConditionalOnSingleCandidate 注解冲突的问题问题背景项目再引入 RabbitMQ,在自定义 connectionFactory 时,手滑加上了 @RefreshScope@Bean@RefreshScopepublic CachingConnectionFac

2020-07-06 14:24:10 3706

原创 OAuth2 Token 一定要放在请求头中吗?

Token 一定要放在请求头中吗? 答案肯定是否定的,本文将从源码的角度来分享一下 spring security oauth2 的解析过程,及其扩展点的应用场景。Token 解析过程说明当我们使用 spring security oauth2 时, 一般情况下需要把认证中心申请的 token 放在请求头中请求目标接口,如下图 ①spring security oauth2 通过拦截器获取此 token 完成令牌到当前用户信息(UserDetails)的转换。OAuth2Authenticati

2020-06-28 16:15:59 6232 2

原创 Spring Boot 2.3 新特配置文件属性跟踪

背景当我们使用 spring boot 在多环境打包,配置属性在不同环境的值不同,如下:spring: profiles: active: @project.profile@ #根据maven 动态配置profile---spring: profiles: devdemo: lengleng_dev---spring: profiles: prddemo: lengleng_prd或者使用 spring cloud 配置中心 (nacos/config)等再有就是

2020-06-22 14:46:34 791

原创 为什么 Spring Boot 2.3.0 放弃Maven最终拥抱Gradle

在 2.3.0 中对 Spring Boot 进行了相当重大的更改,这是使用 Gradle 而非 Maven 构建的项目的第一个版本。Spring 的每个项目都独立的项目组在开发运营,在用户最常使用的白盒部分(例如 API 设计)保持一致性,对于用户不可见的黑盒部分,各个项目组选择自己适合工具没有统一的约定。例如: 项目构建工具。Spring Framework 自 2012 年的 3.2.0 起就使用 Gradle 构建,而一年后开始使用 Spring Boot,此后不久又开始使用 Spring Cl

2020-06-15 08:42:03 3401

原创 Spring Boot 2.3.0 新特性Redis 拓扑动态感应

本文为原创文章。欢迎任何形式的转载,但请务必注明出处 冷冷https://lltx.github.io。Spring Boot 2.3 新特性优雅停机详解Spring Boot 2.3 新特性分层 JAR本篇是 spring boot v2.3 系列第三篇,来分享一下 v2.3 关于 spring data redis 的故障转移优化。背景关于 Redis 在生产中我们一般情况下都会选择 redis cluster 高可用架构部署,既能保证数据分片并且实现节点的故障自动转移。 基本部署拓扑如.

2020-06-11 09:06:56 2754

原创 聊聊 OAuth 2.0 的 Token 续期处理

Token 校验逻辑// CheckTokenEndpoint.checkToken@RequestMapping(value = "/oauth/check_token")@ResponseBodypublic Map<String, ?> checkToken(@RequestParam("token") String value) { // 根据 token 查询保存在 tokenStore 的令牌全部信息 OAuth2Ac

2020-06-08 12:01:28 3638

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除