Spring相关
文章平均质量分 66
Full Stack Developme
不生产代码,只把代码搬运到适合它的地方。
展开
-
Spring Cloud Netflix 与 Alibaba 区别
Spring Cloud Netflix 与 Alibaba 区别转载 2024-06-03 10:20:21 · 177 阅读 · 0 评论 -
spring cookie session 详解
spring cookie session 详解转载 2024-03-12 10:03:33 · 361 阅读 · 0 评论 -
Nginx SpringBoot Redis Session 共享
Nginx SpringBoot Redis Session 共享转载 2024-03-07 21:24:23 · 55 阅读 · 0 评论 -
SpringBoot 配置文件 详解
SpringBoot 配置文件 详解转载 2024-03-06 14:08:26 · 473 阅读 · 0 评论 -
Spring SpEL 详解
Spring SpEL 详解转载 2024-03-06 13:53:01 · 662 阅读 · 0 评论 -
springboot @Value 教程
(2)@Value("#{}"):表示 SpEl。转载 2023-09-25 09:05:53 · 279 阅读 · 0 评论 -
Springboot通过谷歌Kaptcha 组件,生成图形验证码
生成图形验证码的办法非常多,今天讲解一种通过Kaptcha组件快速生成图形验证码的方法。我个人推荐它的最大原因是容易上手,采用约定大于配置的方式,快速契合到项目中。图片样式:<br />水纹 com.google.code.kaptcha.impl.WaterRipple <br />鱼眼 com.google.code.kaptcha.impl.FishEyeGimpy <br />阴影 com.google.code.kaptcha.impl.ShadowGimpy。转载 2023-09-22 11:14:50 · 857 阅读 · 0 评论 -
SpringBoot Session 自动化配置
在这样的架构中,会出现一些单服务中不存在的问题,例如客户端发起一个请求,这个请求到达 Nginx 上之后,被 Nginx 转发到 Tomcat A 上,然后在 Tomcat A 上往 session 中保存了一份数据,下次又来一个请求,这个请求被转发到 Tomcat B 上,此时再去 Session 中获取数据,发现没有之前的数据。对于开发者来说,所有关于 Session 同步的操作都是透明的,开发者使用 Spring Session,一旦配置完成后,具体的用法就像使用一个普通的 Session 一样。转载 2023-08-11 17:00:52 · 191 阅读 · 0 评论 -
SpringBoot 以 war 包的形式部署
SpringBoot 以 war 包的形式部署转载 2023-08-03 21:45:10 · 454 阅读 · 0 评论 -
Springboot @ControllerAdvice 介绍
Springboot @ControllerAdvice 介绍转载 2023-02-02 14:29:26 · 291 阅读 · 0 评论 -
Springboot 自定义转换器 configureMessageConverters 与 extendMessageConverters
Springboot 自定义转换器 configureMessageConverters 与 extendMessageConverters转载 2023-02-02 13:44:21 · 2310 阅读 · 2 评论 -
Spring 参数校验及通用异常信息返回
Spring 参数校验及通用异常信息返回转载 2023-02-02 11:23:34 · 379 阅读 · 0 评论 -
Springboot WebMvcConfigurer 详解
Springboot WebMvcConfigurer 详解转载 2023-02-02 10:58:35 · 182 阅读 · 0 评论 -
springboot Redis 事件监听
springboot Redis 事件监听原创 2022-12-18 16:29:12 · 1566 阅读 · 0 评论 -
SpringBoot 集成 Redis,运行一段时间后发现RedisCommandTimeoutException
SpringBoot 集成 Redis,运行一段时间后发现RedisCommandTimeoutException原创 2022-12-13 14:42:06 · 959 阅读 · 0 评论 -
springboot 编程式事务
springboot 编程式事务转载 2022-11-02 19:56:14 · 419 阅读 · 0 评论 -
Sp EL 表达式总结
Sp EL 表达式总结转载 2022-06-19 21:42:07 · 878 阅读 · 0 评论 -
@Retryable 注解优雅实现重处理
@Retryable 注解优雅实现重处理转载 2022-06-06 21:36:48 · 134 阅读 · 0 评论 -
Influxdb 整合 springboot
<dependency> <groupId>plus.ojbk</groupId> <artifactId>influxdb-spring-boot-starter</artifactId> <version>1.0.2</version></dependency>#---------# Influxdb#---------influxdb: url: http:/.转载 2022-03-31 13:29:42 · 4218 阅读 · 4 评论 -
springboot 中使用 Minio8
关于MinioMinio的介绍,安装,以及基本维护,可以参考我以前的帖子https://springboot.io/t/topic/209065。当时Java的sdk版本是:7.0.2,现在sdk升级到8了,有些API有些变化,主要还是规范了方法的参数。<!-- https://mvnrepository.com/artifact/io.minio/minio --><dependency> <groupId>io.minio</groupI..转载 2022-03-31 13:13:32 · 983 阅读 · 0 评论 -
Spring Boot 集成 Seata 解决分布式事务问题
seata 简介Seata 是 阿里巴巴2019年开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。在 Seata 开源之前,Seata 对应的内部版本在阿里内部一直扮演着分布式一致性中间件的角色,帮助阿里度过历年的双11,对各业务进行了有力的支撑。经过多年沉淀与积累,2019.1 Seata 正式宣布对外开源 。目前 Seata 1.0 已经 GA。微服务中的分布式事务问题让我们想象一下传统的单片应用程序,它的业务由3个模块组成,他们使用单个本地数据源。自然,转载 2022-03-31 13:09:23 · 1594 阅读 · 0 评论 -
YAML 配置复杂集合类型
@Configuration@ConfigurationProperties(prefix = "db-config")public class DbConfig { List<DbInfo> defalutConfigList; boolean isReadConfig; public List<DbInfo> getDefalutConfigList() { return defalutConfigList; } ...转载 2022-03-27 09:04:58 · 601 阅读 · 1 评论 -
SpringBoot 使用拦截器、过滤器、监听器
介绍过滤器过滤器的英文名称为 Filter, 是 Servlet 技术中最实用的技术。如同它的名字一样,过滤器是处于客户端和服务器资源文件之间的一道过滤网,帮助我们过滤掉一些不符合要求的请求,通常用作 Session 校验,判断用户权限,如果不符合设定条件,则会被拦截到特殊的地址或者基于特殊的响应。首先需要实现Filter接口然后重写它的三个方法init 方法:在容器中创建当前过滤器的时候自动调用 destory 方法:在容器中销毁当前过滤器的时候自动调用 doFilter 方法.转载 2022-03-09 22:13:01 · 427 阅读 · 0 评论 -
Shiro 性能优化:解决 Session 频繁读写问题
叙述Shiro 提供了强大的 Session 管理功能,基于 Shiro 实现 Session 共享非常方便,只需要定制一个我们自己的SessionDAO,并将它绑定给 SessionManager 即可。在我们的 SessionDAO 中,通常会将 Session 保存到 Redis,那么 Shiro 对 Session 的增删改查,都会直接操作 Redis。但是由于 Shiro 对 Session 的访问非常频繁,用户的一次请求,可能就会触发几十次的 Session 访问操作,在 Sessio转载 2022-01-26 14:00:03 · 833 阅读 · 0 评论 -
SpringBoot Restful API 接口版本号,实现 API 版本控制
叙述一般来说,api 接口是提供给其他系统或是其他公司使用,不能随意频繁的变更。然而,需求和业务不断变化,接口和参数也会发生相应的变化。如果直接对原来的接口进行修改,势必会影响线其他系统的正常运行。这就必须对api 接口进行有效的版本控制。例如,添加用户的接口,由于业务需求变化,接口的字段属性也发生了变化而且可能和之前的功能不兼容。为了保证原有的接口调用方不受影响,只能重新定义一个新的接口。http://localhost:8080/api/v1/user http://localhost:转载 2022-01-26 13:35:03 · 3101 阅读 · 2 评论 -
SpringBoot 监听 Redis 的 Key 过期事件
叙述在一些业务场景中,我们希望在Redis的key过期时,得到通知。解决方案Redis的配置修改conf文件 notify-keyspace-events "Ex" 该配置表示监听key的过期事件,默认未开启 该配置的其他信息(可以监听N多事件),可以参阅配置文件的注释,非常详细自定义监听器该监听器会在key过期时候触发import java.nio.charset.StandardCharsets;import org.slf4j.Logger;import o转载 2022-01-26 10:49:03 · 2143 阅读 · 2 评论 -
RedisTemplate 中使用scan代替keys指令
叙述keys *这个命令千万别在生产环境乱用。特别是数据庞大的情况下。因为Keys会引发Redis锁,并且增加Redis的CPU占用。很多公司的运维都是禁止了这个命令的当需要扫描key,匹配出自己需要的key时,可以使用scan命令解决方案import java.io.IOException;import java.nio.charset.StandardCharsets;import java.util.ArrayList;import java.util.List;im...转载 2022-01-26 10:42:58 · 1265 阅读 · 0 评论 -
Spring RequestContextHolder 和 RequestContextFilter
Spring RequestContextHolder 和 RequestContextFilter转载 2021-12-16 11:03:06 · 2748 阅读 · 0 评论 -
springboot StopWatch 使用
叙述有时在做开发的时候需要记录每个任务执行时间,或者记录一段代码执行时间,最简单的方法就是打印当前时间与执行完时间的差值,然后这样如果执行大量测试的话就很麻烦,并且不直观,如果想对执行的时间做进一步控制,则需要在程序中很多地方修改,目前spring-framework提供了一个StopWatch类可以做类似任务执行时间控制,也就是封装了一个对开始时间,结束时间记录工具。教程 统计输出总耗时 1import org.springframework.util.StopWatch; 2 3转载 2021-11-29 13:35:37 · 1123 阅读 · 0 评论 -
SpringBoot 全局事务配置
叙述全局事务配置就是通过AOP切面指定切入点,从而对指定的逻辑代码统一进行事务控制配置<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>@Aspect@Configurationpublic c转载 2021-11-25 14:14:01 · 1799 阅读 · 0 评论 -
@Transactional 详解
叙述当标于类前时, 标示类中所有方法都进行事物处理,例子:@Transactional public class TestServiceBean implements TestService {}错误案例在同一个类中调用public class A { public void methodA() { methodB(); // 其他操作 } @Transactional public v..转载 2021-11-20 16:37:23 · 257 阅读 · 0 评论 -
SpringBoot resource 资源文件的打包配置详解
叙述(1)默认Spring Boot项目结构,资源文件放置在src/main/resources中,测试的资源文件在src/test/resources中。src/main/resources与src/test/resources的区别:src/main/java里面的java文件只能直接加载src/main/resources下的资源,不能直接加载src/test/resources下的资源; src/test/java里面的java文件既能加载sr...转载 2021-10-26 20:51:05 · 9833 阅读 · 0 评论 -
SpringBoot application.yml 使用详解
教程(1)YAML是JSON的超集,简洁而强大,是一种专门用来书写配置文件的语言,可以替代application.properties。(2)在创建一个SpringBoot项目时,引入的spring-boot-starter-web依赖间接地引入了snakeyaml依赖,snakeyaml会实现对YAML配置的解析。(3)YAML的使用非常简单,利用缩进来表示层级关系,并且大小写敏感。可以使用@PropertySource注解加载自定义的Propertie...转载 2021-10-25 23:28:38 · 2300 阅读 · 0 评论 -
SpringBoot application.properties 使用详解
教程开启自动转码功能application.properties提供了自定义属性的支持,如果数据有中文的话需要进行转码,否则可能会出现乱码问题。如果我们使用的是IntelliJ IDEA,那么直接在setting配置中进行如下设置,这样编辑器就会自动对中文内容进行转码。配置属性的定义我们可以在application.properties中添加类似如下这样简单的常量配置:my.name=航歌my.age=100配置属性之间也可以相互引用使用:my...转载 2021-10-25 19:37:32 · 3616 阅读 · 0 评论 -
SpringBoot @ControllerAdvice @InitBinder 的使用详解
叙述我们知道无论是Get请求还是Post请求,Controller这边都可以定义一个实体类来接收这些参数。而@ControllerAdvice结合@InitBinder还能实现请求参数预处理,即将表单中的数据绑定到实体类上时进行一些额外处理。描述假设我们有如下两个实体类User和Book:public class User { private String name; private Integer age; // 省略getter/sette...转载 2021-10-20 15:49:29 · 1237 阅读 · 0 评论 -
SpringBoot @ControllerAdvice @ModelAttribute 的使用详解
叙述@ControllerAdvice是一个全局数据处理组件,因此也可以在@ControllerAdvice中配置全局数据,使用@ModelAttribute注释进行配置。(1)这里我们在全局配置中添加了两个方法:message方法:返回一个String。 userInfo方法:返回一个map。(2)这两个方法有一个注解@ModelAttribute,其中value属性表示这条返回数据的key,而方法的返回值是返回数据的value。教程impor...转载 2021-10-20 15:41:35 · 706 阅读 · 0 评论 -
SpringBoot @ControllerAdvice @ExceptionHandler 的使用详解
叙述顾名思义,@ControllerAdvice就是@Controller的增强版。@ControllerAdvice主要用来处理全局数据,一般搭配@ExceptionHandler、@ModelAttribute、@InitBinder使用。下面分别进行介绍。教程@ExceptionHandler@ControllerAdvice最常见的使用场景就是全局异常处理。假设我们项目中有个文件上传功能,并且对文件上传的大小限制进行了配置。如果用户上传的文件超过了限制大小,就会抛出...转载 2021-10-20 15:35:03 · 507 阅读 · 0 评论 -
SpringBoot 获取 POST 请求参数详解
叙述在前文中我介绍了Controller如何接收通过GET方式传递过来的参数(点击查看),下面接着演示如何接收通过POST方式传递过来的参数。解决方案接收 Form 表单数据下面样例Controller接收form-data格式的POST数据:import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.Req...转载 2021-10-19 11:20:16 · 7781 阅读 · 0 评论 -
SpringBoot 获取 Get 请求参数详解
叙述利用Spring Boot来制作Web应用,就必定会涉及到前端与后台之间互相传递参数。下面演示Controller如何接收以GET方式传递过来的参数。解决方案参数直接在路径中假设请求地址是如下这种RESTful风格,hangge这个参数值直接放在路径里面:http://localhost:8080/hello/hanggeimport org.springframework.web.bind.annotation.PathVariable;imp...转载 2021-10-19 10:49:30 · 5453 阅读 · 0 评论 -
SpringBoot - 实现静态资源的访问
叙述当我们使用IntelliJ IDEA创建Spring Boot项目,会默认创建classpath:/static/目录,我们直接把静态资源放在这个目录下即可。我们直接在浏览器中输入“http://localhost:8080/java.png”即可看到我们添加的这张图片。自定义策略如果默认的静态资源过滤策略不能满足开发需求,也可以自定义静态资源过滤策略,自定义的方式有如下两种。通过配置:我们在application.properties中直接定义过...转载 2021-10-09 18:56:52 · 341 阅读 · 0 评论