springblog

【SpringBoot DB 系列】Redis 高级特性之发布订阅

柔情痞子 提交于 2021-02-10 06:01:23
【SpringBoot DB 系列】Redis 高级特性之发布订阅 通常来讲,当我们业务存在消息的业务逻辑时更多的是直接使用成熟的 rabbitmq,rocketmq,但是一些简单的业务场景中,真的有必要额外的引入一个 mq 么?本文将介绍一下 redis 的发布订阅方式,来实现简易的消息系统逻辑 <!-- more --> I. 基本使用 1. 配置 我们使用 SpringBoot 2.2.1.RELEASE 来搭建项目环境,直接在 pom.xml 中添加 redis 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 如果我们的 redis 是默认配置,则可以不额外添加任何配置;也可以直接在 application.yml 配置中,如下 spring: redis: host: 127.0.0.1 port: 6379 password: 2. 使用姿势 redis 的发布/订阅,主要就是利用两个命令 publish/subscribe ; 在 SpringBoot 中使用发布订阅模式比较简单,借助 RedisTemplate 可以很方便的实现 a. 消息发布

【SpringBoot WEB系列】静态资源配置与读取

天涯浪子 提交于 2020-10-14 16:46:07
【WEB系列】静态资源配置与读取 SpringWeb项目除了我们常见的返回json串之外,还可以直接返回静态资源(当然在现如今前后端分离比较普遍的情况下,不太常见了),一些简单的web项目中,前后端可能就一个人包圆了,前端页面,js/css文件也都直接放在Spring项目中,那么你知道这些静态资源文件放哪里么 <!-- more --> I. 默认配置 1. 配置 静态资源路径,SpringBoot默认从属性 spring.resources.static-locations 中获取 默认值可以从 org.springframework.boot.autoconfigure.web.ResourceProperties#CLASSPATH_RESOURCE_LOCATIONS 获取 private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/" }; /** * Locations of static resources. Defaults to classpath:[/META-INF/resources/, *

【SpringBoot WebFlux 系列】 header 参数解析

孤者浪人 提交于 2020-09-29 07:43:51
【SpringBoot WebFlux 系列】WebFlux 之 header 参数解析 上一篇 weblfux 主要介绍了 path 参数的解析与映射关系,在我们进入 url 参数/post 表单之前,先看一下另外的一种参数--请求头中的参数如何处理 <!-- more --> I. 项目环境 本项目借助 SpringBoot 2.2.1.RELEASE + maven 3.5.3 + IDEA 进行开发 1. 依赖 使用 WebFlux,最主要的引入依赖如下(省略掉了 SpringBoot 的相关依赖,如对于如何创建 SpringBoot 项目不太清楚的小伙伴,可以关注一下我之前的博文) <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> </dependencies> II. 请求头参数解析 在实际的业务开发中,有几个请求头出现的频率特别高,如常用于反爬的 User-Agent ,鉴定强求来源的 referer ,跨域相关的 Access-Control-Allow- ,cookie、session 自定义的请求头等 1. 请求头限制 在

【SpringCloud 系列】Eureka 注册中心初体验

佐手、 提交于 2020-08-13 02:07:11
【SpringCloud 系列】Eureka 注册中心初体验 在 SpringCloud 微服务体系中,有几个比较重要的组件,如注册中心,配置中心,网关,安全、负载均衡、监控等等,接下来我们将来看一下这些常用的组件有什么用,在微服务架构下的该怎么用。 本文为为第一篇,注册中心 Eureka 的使用说明 <!-- more --> I. 基本介绍 1. 注册中心 注册中心,主要的核心点是服务的注册与发现。 简单来讲,就是我们的所有服务都会在注册中心上标识自己,注册中心统一管理所有的服务名与具体的应用之间的映射关系,这样微服务之间的访问,就可以直接通过服务名来相互通信,相比较于直接通过 ip 端口的访问,这样的好处是当某个服务下线、新增或者换了机器,对调用者而言,只要维持一份注册中心的最新映射表即可,不需要其他任何改动逻辑。 我们通常可用的注册中心有 Eureka , Consul , Zookeeper , nacos 等,在我们后续的教程中会逐一进行介绍 Eureka2.x 闭源,1.x 虽然可用,但新项目的话不建议再使用它,比如 Consul , nacos 都是不错的选择 如果出于学习的目的,或者由于历史原因(比如我),学习了解一下 Eureka 知识点也没什么坏处 2. Eureka Eureka 是 Netflix 开源的服务发现组件,本身是一个基于 REST 的服务

【SpringBoot 基础系列】实现一个自定义配置加载器(应用篇)

六眼飞鱼酱① 提交于 2020-05-07 11:58:08
【SpringBoot 基础系列】实现一个自定义配置加载器(应用篇) Spring 中提供了 @Value 注解,用来绑定配置,可以实现从配置文件中,读取对应的配置并赋值给成员变量;某些时候,我们的配置可能并不是在配置文件中,如存在 db/redis/其他文件/第三方配置服务,本文将手把手教你实现一个自定义的配置加载器,并支持 @Value 的使用姿势 <!-- more --> I. 环境 & 方案设计 1. 环境 SpringBoot 2.2.1.RELEASE IDEA + JDK8 2. 方案设计 自定义的配置加载,有两个核心的角色 配置容器 MetaValHolder :与具体的配置打交道并提供配置 配置绑定 @MetaVal :类似 @Value 注解,用于绑定类属性与具体的配置,并实现配置初始化与配置变更时的刷新 上面 @MetaVal 提到了两点,一个是初始化,一个是配置的刷新,接下来可以看一下如何支持这两点 a. 初始化 初始化的前提是需要获取到所有修饰有这个注解的成员,然后借助 MetaValHolder 来获取对应的配置,并初始化 为了实现上面这一点,最好的切入点是在 Bean 对象创建之后,获取 bean 的所有属性,查看是否标有这个注解,可以借助 InstantiationAwareBeanPostProcessorAdapter 来实现 b. 刷新

Java实现AES ECP PKCS5Padding加解密工具类

◇◆丶佛笑我妖孽 提交于 2020-05-01 08:43:07
Java 实现一个 AES/ECB/PKCS5Padding 加解密算法工具类 加密算法: AES 模式: ECB 补码方式: PKCS5Padding <!-- more --> 1. 工具类 import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.springframework.util.Base64Utils; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.io.BufferedInputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.security.MessageDigest; /** * Created by @author yihui in 19:12 20/1/2. */ @Slf4j public class EncryptUtil { private static final String KEY_ALGORITHM = "AES"; /** * 算法/模式/补码方式 */