标签: Spring 全家桶

青木 | 1天前 | 后端相关Spring 全家桶

SpringBoot整合新版Spring Security:Lambda表达式配置更优雅

Spring Security 是保障Spring应用程序安全的强大框架,而新版的Spring Security引入了lambda表达式来配置,使得安全配置更加简洁、优雅。本文将介绍如何在Spring Boot项目中整合新版Spring Security,并通过lambda表达式进行安全配置,提供更好的开发体验。 1. 引言 Spring Security是一个用于身份验证和授权的框架,它提供了一套全面的安全服务,可轻松集成到Spring应用程序中。新版Spring Security引入了lambda表达式的配置方式,取代了之前的繁琐XML配置和方法调用链式配置,使得配置更加清晰、简洁。 2. 项目依赖配置 首先,确保你的Spring Boot项目中包含了Spring Security的依赖。在pom.xml中添加以下依赖: <!-- Spring Security - <dependency     <

 19 |  0 |  0 后端相关Spring 全家桶

孤音 | 6天前 | 后端相关Spring 全家桶

玩转 Spring 状态机:更优雅的实现订单状态流转

说起 Spring 状态机,大家很容易联想到这个状态机和设计模式中状态模式的区别是啥呢?没错,Spring 状态机就是状态模式的一种实现,在介绍 Spring 状态机之前,让我们来看看设计模式中的状态模式。 1. 状态模式 状态模式的定义如下: “状态模式(State Pattern)是一种行为型设计模式,它允许对象在内部状态发生变化时改变其行为。在状态模式中,一个对象的行为取决于其当前状态,而且可以随时改变这个状态。状态模式将对象的状态封装在不同的状态类中,从而使代码更加清晰和易于维护。当一个对象的状态改变时,状态模式会自动更新该对象的行为,而不需要在代码中手动进行判断和处理。 通常业务系统中会存在一些拥有状态的对象,而且这些状态之间可以进行转换,并且在不同的状态下会表现出不同的行为或者不同的功能,比如交通灯控制系统中会存在红灯、绿灯和黄灯,再比如订单系统中的订单会存在已下单、待支付、待发货、待收货等状态,这些状态会通过不同的行为进行相互转换,这时候在系统设计时就可以使用状态模式。 下面是状态模式的类图: ![图片](https://static.develo...

 36 |  0 |  0 后端相关Spring 全家桶

大牛猫 | 1周前 | 后端相关Spring 全家桶

SpringBoot 实现 PDF 添加水印,这五种方案送上!

简介 PDF(Portable Document Format,便携式文档格式)是一种流行的文件格式,它可以在多个操作系统和应用程序中进行查看和打印。在某些情况下,我们需要对 PDF 文件添加水印,以使其更具有辨识度或者保护其版权。 “本文将介绍如何使用 Spring Boot 来实现 PDF 添加水印的方式。PS:当然,只是笔者使用Spring Boot 测试,Java代码均可实现,并不是非要在 spring Boot 上实现哦! 方式一:使用 Apache PDFBox 库 PDFBox 是一个流行的、免费的、用 Java 编写的库,它可以用来创建、修改和提取 PDF 内容。PDFBox 提供了许多 API,包括添加文本水印的功能。 1. 添加 PDFBox 依赖 首先,在 pom.xml 文件中添加 PDFBox 的依赖: <dependency     <groupId org.apache.pdfbox</groupId     <artifactId pdfbox</artifactId     <version 2.0.

 34 |  0 |  0 后端相关Spring 全家桶

布朗熊 | 1周前 | 后端相关Spring 全家桶Redis

SpringBoot+Redis自定义注解实现发布订阅

前言 最近开发了一个内部消息组件,逻辑大体是通过定义注解 @MessageHub ,在启动时扫描全部bean中有使用了该注解的方法后台创建一个常驻线程代理消费数据,当线程消费到数据就回写到对应加了注解的方法里。 @Slf4j @Service public class RedisConsumerDemo {     @MessageHub(topic = "${uptown.topic}", type = "REDIS_PUBSUB")     public void consumer(Object message) {         log.info("pubsub info {} ", message);     }    } 实现redis的队列、stream方式实现都很简单,唯独发布订阅方式,网上的demo全都是一个固定套路,通过redis容器注入监听器,而且回写非常死板。那么如何将这块的逻辑统一呢。 之前总结过消息组件的代码设计,这里贴一下链接: “https://juejin.cn/post/7204113113699729463

 35 |  0 |  0 后端相关Spring 全家桶

追风少年 | 1周前 | 后端相关Spring 全家桶

SpringBoot+ElasticSearch实现文档内容抽取、高亮分词、全文检索

需求 产品希望我们这边能够实现用户上传PDF、WORD、TXT之内得文本内容,然后用户可以根据附件名称或文件内容模糊查询文件信息,并可以在线查看文件内容。 一、环境 项目开发环境: 后台管理系统springboot+mybatis_plus+mysql+es 搜索引擎:elasticsearch7.9.3 +kibana图形化界面 二、功能实现 1.搭建环境 es+kibana的搭建这里就不介绍了,网上多的是 后台程序搭建也不介绍,这里有一点很重要,Java使用的连接es的包的版本一定要和es的版本对应上,不然你会有各种问题 2.文件内容识别 第一步: 要用es实现文本附件内容的识别,需要先给es安装一个插件: Ingest Attachment Processor Plugin 这知识一个内容识别的插件,还有其它的例如OCR之类的其它插件,有兴趣的可以去搜一下了解一下 Ingest Attachment Processor Plugin 是一个文本抽取插件,本质上是利用了Elasticsearch的ing...

 41 |  0 |  0 后端相关Spring 全家桶

雨馨 | 1周前 | 后端相关Spring 全家桶

实现 SpringBoot 程序加密,禁止 jadx 反编译

背景 toB 的本地化 java 应用程序,通常是部署在客户机器上,为了保护知识产权,我们需要将核心代码(例如 Lience,Billing,Pay 等)进行加密或混淆,防止使用 jadx 等工具轻易反编译。同时,为了更深层的保护程序,也要防止三方依赖细节被窥探; 业界方案 1.ProGuard^[1]^ 简介:开源社区有名的免费混淆工具,相较于字节码加密,对性能基本无影响; 优势:打包阶段混淆字节码,各种变量方法名都变成了abcdefg 等等无意义的符号,字节码可被反编译,但几乎无法阅读,通常被 Android App 用来防止逆向; 不足1:只能混淆部分代码,打包阶段较为耗时,对于三方包混淆,并没有什么好办法。 不足2:混淆后的代码,会影响 arthas 工具的使用,导致排查问题变慢。 不足3:配置比较复杂,曾经在我司 T 项目上用过,令人眼花缭乱。 不足4:无法加密三方依赖所有信息; 2.jar-protect^[2]^ 简介:一款国人开发的 springboot jar 加密工具;需要配合 javaagent 解密; 优...

 36 |  0 |  0 后端相关Spring 全家桶

一纸荒年 | 1周前 | 后端相关Spring 全家桶

在 SpringBoot 中设计一个订单号生成系统

在Spring Boot中设计一个订单号生成系统,主要考虑到生成的订单号需要满足的几个要求:唯一性、可扩展性、以及可能的业务相关性。以下是几种常见的解决方案及相应的示例代码: 1. UUID 最简单的方法是使用UUID生成唯一的订单号。UUID(Universally Unique Identifier)是一种广泛使用的标识符,由128位组成,通常以32个十六进制数字表示,分为五组,形式为8-4-4-4-12的字符串,例如 123e4567-e89b-12d3-a456-426614174000 。 UUID全球唯一,实现简单,但缺点是UUID较长,不易记忆和存储。 实例代码 Java中生成UUID的示例代码如下: import java.util.UUID; public class UUIDGenerator {     public static String generateUUID() {         // 生成一个UUID         UUID uuid = UUID.randomUUID();                

 48 |  0 |  0 后端相关Spring 全家桶

雪千寻 | 1周前 | 后端相关Spring 全家桶

SpringBoot启动扩展应用:干预优化+加快启动时间

一、SpringBoot启动配置原理简述 本内容直接查看分析SpringBoot启动配置原理,传送门: “https://zyfcodes.blog.csdn.net/article/details/130903779 因为本期的各种优化干预手段都依赖其基本原理,建议在使用前进行阅读。 二、SpringBoot启动过程干预 Spring Boot启动过程中我们可以实现以下干预工作: 修改Spring Boot默认的配置属性。使用 @ConfigurationProperties 和 @EnableConfigurationProperties 注解,可以获取和修改Spring Boot的配置属性。 加载配置文件。Spring Boot会自动加载application.properties或application.yml等配置文件,我们可以在启动时加载其他配置文件。 自定义bean。我们可以通过 @Component 注解创建自定义的bean以及其他的 @SpringBootAnnotation 注解,来实现更灵活的配置和自动化初始化。 ...

 39 |  0 |  0 后端相关Spring 全家桶

心如止水 | 1周前 | 后端相关Spring 全家桶

SpringBoot整合新版Spring Security:Lambda表达式配置更优雅

Spring Security 是保障Spring应用程序安全的强大框架,而新版的Spring Security引入了lambda表达式来配置,使得安全配置更加简洁、优雅。本文将介绍如何在Spring Boot项目中整合新版Spring Security,并通过lambda表达式进行安全配置,提供更好的开发体验。 1. 引言 Spring Security是一个用于身份验证和授权的框架,它提供了一套全面的安全服务,可轻松集成到Spring应用程序中。新版Spring Security引入了lambda表达式的配置方式,取代了之前的繁琐XML配置和方法调用链式配置,使得配置更加清晰、简洁。 2. 项目依赖配置 首先,确保你的Spring Boot项目中包含了Spring Security的依赖。在pom.xml中添加以下依赖: <!-- Spring Security - <dependency     <

 33 |  0 |  0 后端相关Spring 全家桶

温酒 | 1周前 | 后端相关Spring 全家桶

只会用 SpringBoot 创建微服务?看看这 4 种替代方案!

前言 在 Java 和 Kotlin 中, 除了使用Spring Boot创建微服务外,还有很多其他的替代方案。 本文,基于这些微服务框架,创建了五个服务,并使用Consul的服务发现模式实现服务间的 相互通信。因此,它们形成了异构微服务架构(Heterogeneous Microservice Architecture, 以下简称 MSA): 本文简要考虑了微服务在各个框架上的实现,更多细节请查看源代码: “https://github.com/rkudryashov/heterogeneous-microservices 技术栈: JDK 13 Kotlin Gradle (Kotlin DSL) ...

 38 |  0 |  0 后端相关Spring 全家桶

晚风 | 1周前 | 后端相关Spring 全家桶

Feign 第一次调用为什么会很慢?

前言 首先要了解Feign是如何进行远程调用的,这里面包括,注册中心、负载均衡、 FeignClient 之间的关系,微服务通过不论是eureka、nacos也好注册到服务端,Feign是靠 Ribbon 做负载的,而Ribbon需要拿到注册中心的服务列表,将服务进行负载缓存到本地,然后FeignClient客户端在进行调用,大概就是这么一个过程。 Ribbon是如何进行负载的 首先我们要清楚Ribbon是如何进行负载的,也就是如何获取nacos、eureka的服务列表,这个很关键。 RibbonClientConfiguration RibbonClientConfiguration 类中通过 LoadBalancer ,我们知道r...

 38 |  0 |  0 后端相关Spring 全家桶

晴天 | 2周前 | 后端相关Spring 全家桶Docker

SpringBoot+Docker:高效容器化的最佳实践

首先为什么要使用Docker? Docker是一个强大的工具,它允许开发者将他们的应用程序打包到容器中,以便可以在任何平台上轻松部署和运行。当涉及到对 Spring Boot 应用程序进行 Docker 化时,每个开发人员都应该遵循一些最佳实践,以确保应用程序平稳高效地运行。 在本文中,我们将探讨这些最佳实践,并提供代码示例和说明,以帮助您对 Spring Boot 应用程序进行 Docker 化。 作为一个 java 开发者,有很多用于支持 spring-boot 应用程序的基础官方镜像,我们需要关注镜像的大小,特别是当项目变大时。 使用正确的基础镜像 当对 Spring Boot 应用程序进行 Docker 化时,为您的应用程序选择正确的基础镜像非常重要。您可能知道 Docker 中的所有镜像都有 Linux 内核的基础层,因此我们不需要将这部分添加到我们的镜像中,因为我们的基础镜像提供了您的应用程序所需的底层内核和依赖项。选择正确的基础镜像有助于确保您的应用程序在 Docker 容器中平稳高效地运行。 对于 Spring Boot 应用程序,建议使用 ...

 58 |  0 |  0 后端相关Spring 全家桶

女王范 | 2周前 | 后端相关Spring 全家桶

业务优雅解耦,一文带你吃透 Spring 框架中的事件处理机制

前言 在现代应用程序中,各个组件之间的通信是至关重要的。想象一下,你的应用程序中的各个模块像是一个巨大的交响乐团,每个模块都是一位音乐家,而Spring事件机制就像是指挥家,将所有音乐家协调得天衣无缝。 这种松耦合的通信方式使你的应用程序更加灵活、可维护,而且能够轻松应对变化。现在,让我们进入这个令人兴奋的音乐厅,探索Spring事件的世界。 什么是spring事件 在 Spring框架 中,事件(Events)是一种基本概念,用于实现松耦合的通信方式,允许不同组件之间进行相互通知和协作。 Spring事件机制允许应用程序内的组件发送和接收事件,以便在系统中实现更松散的耦合,同时提高了可维护性和可扩展性。 以下是有关Spring事件的基本概念和工作原理: 1. 事件(Event): 事件是一个对象,它封装了有关事件发生的信息。在Spring中,通常是一个普通的Java对象。 事件可以包含任何有关事件的信息,例如事件类型、时间戳、发生事件的对象等。 2. 事件发布者(Event Publisher): 事件发布者是一个...

 50 |  0 |  0 后端相关Spring 全家桶

念旧。 | 2周前 | 后端相关Spring 全家桶

SpringBoot + Nacos 实现了一个动态化线程池,非常实用!

1.背景 在后台开发中,会经常用到线程池技术,对于线程池核心参数的配置很大程度上依靠经验。然而,由于系统运行过程中存在的不确定性,我们很难一劳永逸地规划一个合理的线程池参数。 在对线程池配置参数进行调整时,一般需要对服务进行重启,这样修改的成本就会偏高。一种解决办法就是,将线程池的配置放到平台侧,运行开发同学根据系统运行情况对核心参数进行动态配置。 本文以Nacos作为服务配置中心,以修改线程池核心线程数、最大线程数为例,实现一个简单的动态化线程池。 2.code 1.依赖 <dependency     <groupId com.alibaba.cloud</groupId     <artifactId spring-cloud-starter-alibaba-nacos-discovery</artifactId     <version 2021.1</version </dependency <dependency     <groupId com.alibaba.cloud</groupId     <artifac

 46 |  0 |  0 后端相关Spring 全家桶

奈我何 | 2周前 | 后端相关Spring 全家桶

SpringBoot 各种回滚骚操作实战

概念 事务定义 事务,就是一组操作数据库的动作集合。事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚到最初的系统状态。 事务特点 原子性: 一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做要么全不做 一致性: 数据不会因为事务的执行而遭到破坏 隔离性: 一个事务的执行,不受其他事务的干扰,即并发执行的事务之间互不干扰 持久性: 一个事务一旦提交,它对数据库的改变就是永久的。 事务实现机制 Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编码式和声明式的两种方式。 编程式事务管理: 编程式事务管理使用 TransactionTemplate 或者直接使用底层的 PlatformTransactionManager 。对于编程式事务管理,spring推...

 53 |  0 |  0 后端相关Spring 全家桶