死牛胖子
在技术的路上渐行渐远
展开
-
SpringBoot学习指引
SpringBoot学习指引原创 2021-03-27 11:17:17 · 259 阅读 · 0 评论 -
SpringBoot 实现接口数据脱敏
SpringBoot实现接口数据脱敏原创 2025-03-12 18:09:12 · 115 阅读 · 0 评论 -
SpringBoot 全局异常处理
SpringBoot全局异常处理、局部异常处理、404异常处理、状态码返回原创 2025-03-06 16:06:42 · 74 阅读 · 0 评论 -
SpringBoot 配置 Servlet/Filter/Listener
Spring 容器整合并管理 Servlet、Filter、Listener 三种 Servlet 组件,如何配置可以支持 Spring 容器的依赖注入。原创 2025-03-05 16:11:22 · 83 阅读 · 0 评论 -
Spring源码分析 | BeanFactoryPostProcessor的用法与源码分析
接口只提供了一个回调方法,通过该方法可以调整容器的属性。 还有一个子接口 ,该接口也提供了一个回调方法,通过该方法可以向容器注册 。 方法的回调时间在 方法之前,也就是说优先注册 。BeanFactoryPostProcessor 在容器启动过程中的执行时机Spring 应用通过 方法启动容器,在 中会对所有的 执行回调, 的执行时间是在完成 加载之后,执行 实例化之前。所以在 中可以修改容器属性,可以注册 ,但最好不要手动做 Bean 实例化,不然可能导致不可预知的错误。如何注册 B原创 2022-06-20 21:30:40 · 361 阅读 · 0 评论 -
Spring源码分析 | FactoryBean的使用及实现原理
Spring是目前使用最广泛的J2EE框架,主要包括IOC及AOP两部分功能,IOC即依赖注入,原创 2022-06-21 16:34:19 · 249 阅读 · 0 评论 -
Spring源码分析 | 设置自定义PropertyEditor
自定义一个对象,为 address 属性通过 注解设置一个默认值,该值是一个字符串,而属性类型是一个对象,正常来说肯定会报错,通过自定义 进行类型转换才可以正常注入。编码自定义 PropertyEditor创建类型转换器 类继承自 类,并重写 方法。自定义 PropertyEditorRegistrar创建类型转换器登记器 ,实现接口 ,在 方法实现对 类型转换器的注册。注册 CustomEditorConfigurer 是一个 ,在 Spring 启动时,会回调 方法实现对原创 2022-06-08 15:01:18 · 261 阅读 · 0 评论 -
Spring源码学习 | Environment环境
什么是多环境?任何一个应用级框架都会存在多环境问题,何谓多环境?正常来说,我们在项目开发过程中会经历开发环境、测试环境、灰度环境、生产环境等,以数据库配置为例,不同环境的数据库连接配置是不一样的,程序启动时需要根据当前环境获取相应的配置,这就是多环境,同一个资源,在不同的环境下拥有不同的版本,需要程序根据当前环境获取到相应的版本资源。@Profile 的用法@Profile 注解可以声明当前 Bean 的适用环境,为一个接口的两个实现分别声明不同的 Profile。public class Conf原创 2021-12-09 17:30:25 · 395 阅读 · 0 评论 -
Spring源码学习 | ResourceLoader资源加载
Spring 将所有的资源统一成了 Resource,不同的资源对应 Resource 的一个实现类,众多的实现类共同组成 Resource 家族,需要加载什么资源,只需要实现 Resource 接口,就可以成为 Resource 家族的一员,统一使用 Resource 接口进行资源加载。但是,在使用时,需要使用者清楚知道不同的资源对应哪一个实现类,以及实现类该如何构建、如何使用,说到底就还是面向实现编程而不是面向接口编程。为了进一步简化资源加载过程,Spring 又封装了 ResourceLoader原创 2022-05-28 11:57:23 · 353 阅读 · 0 评论 -
Spring源码学习 | PropertySource配置源
所有的应用都存在配置,比较常见就是以配置文件的形式出现,比如:SpringBoot 应用中的 application.properties 或者 application.yaml。配置有一个明显的特点就是键值对,配置并不局限于配置文件,只要是键值对形式的都可以作为配置使用,比如:启动命令中可以通过 -D 携带配置,甚至内存中的 Map 也可以作为配置。每一个出现配置的地方,可以认为是一个配置源,一个应用中可以出现多个配置源。不同配置源中的配置可能存在重复的现象,所以多个配置源之间需要有一个优先级。索引原创 2021-12-05 17:10:12 · 494 阅读 · 0 评论 -
Spring源码学习 | Resource资源
目录什么是资源?Resource - 对资源的封装ClassPathResourceFileSystemResourceUrlResourceByteArrayResourceInputStreamResource总结什么是资源?所有的数据都是资源,一个文件、URL、流甚至一个字节数组都可以当作资源,资源需要加载到内存才可以使用,不同的资源加载的方式各不一样。比如:加载本地文件可以使用 JDK 提供的 File 或者 Path 进行加载,加载项目内文件使用 Class.getResourceAsStre原创 2021-11-02 21:02:02 · 214 阅读 · 0 评论 -
SpringBoot整合MybatisPlus实现自定义类型处理
数据持久层框架最核心的功能,就是将数据库中的表与 Java 的对象形成映射,可以以 Java 对象的形式向查询语句传递入参,也可以将查询结果转换为 Java 对象,但是 Java 中的数据类型与数据库中的数据类型并不是一一对应的,这中间就需要进行一次类型处理。Mybatis 提供了 TypeHandler 接口用于字段类型处理,也许有人会说平常使用 Mybatis 也没有用到 TypeHandler,一样可以正常运行啊。这是因为我们平常使用的都是一些常用数据类型,比如:String、Integer、Lon原创 2022-04-03 12:19:50 · 1412 阅读 · 0 评论 -
Spring 报 NoUniqueBeanDefinitionException 异常如何处理
目录@Qualifier 指定 Bean 的名称@Primary 声明主次@Bean 属性 autowireCandidate 声明不依赖注入当 IOC 容器中某种类型的 Bean 存在多个的时候,程序启动时就会报 NoUniqueBeanDefinitionException 异常。创建一个接口 A,A 有两个实现类 A1 及 A2,创建 B,该类拥有一个类型为 A 的属性。public class AutowireBean { public static interface A {原创 2021-08-24 15:34:34 · 733 阅读 · 0 评论 -
SpringBoot 使用 @Async 实现异步编程
SpringBoot使用@Async实现异步编程,线程池基本配置,线程池上下文设置,异步线程异常处理,完整示例原创 2017-02-23 14:51:01 · 1204 阅读 · 0 评论 -
SpringBoot 整合 Jasypt 实现配置文件敏感信息加密
SpringBoot整合Jasypt,实现对配置文件加密,防止数据库密码等敏感信息泄漏,增加配置文件的安全性原创 2021-07-28 10:23:30 · 728 阅读 · 0 评论 -
SpringBoot 整合 Actuator 实现服务监控
目录开始整合添加依赖验证端点介绍开启端点暴露端点SpringBoot 提供了 actuator 获取程序实时运行数据,实时监控应用运行情况,开发人员可以使用 HTTP 或 JMX 通过访问执行器(actuator)中的端点(EndPints)来管理监控应用,包括应用程序的健康状态、应用信息和内存使用状况等。开始整合添加依赖<dependency> <groupId>org.springframework.boot</groupId> <art原创 2021-07-27 17:38:38 · 308 阅读 · 0 评论 -
SpringBoot 整合 P6spy 分析打印 SQL 语句
目录开始整合添加依赖修改数据库配置配置编写自定义日志打印类spy.properties 配置详细说明开始整合添加依赖<dependency> <groupId>p6spy</groupId> <artifactId>p6spy</artifactId> <version>3.9.1</version></dependency>修改数据库配置Mysql 的配置如下:sprin原创 2021-07-26 22:43:22 · 619 阅读 · 0 评论 -
SpringBoot 配置日期格式化(LocalDate/LocalDateTime)
SpringBoot配置日期格式化,Get请求入参使用@DateTimeFormat,路径参数使用@DateTimeFormat,Post Form表单参数使用@DateTimeFormat,Post Json 参数使用@JsonFormat,出参统一使用 @JsonFormat,还可以通过全局配置统一格式。原创 2021-05-19 15:26:19 · 476 阅读 · 0 评论 -
SpringBoot 整合 RabbitMQ 实现延迟队列
相关知识什么是延迟队列队列中的消息在等待指定时间后,消费者才能够进行消费。应用场景商城系统,下单后半个小时未付款,自动取消订单实现方式RabbitMQ 本身没有直接支持延迟队列功能,但是通过控制消息的生存时间及死信队列,可以模拟出延迟队列的效果。RabbitMQ 控制消息的生存时间有两种方法:设置队列属性(x-message-ttl),队列中所有消息都有相同的过期时间设置消...原创 2020-01-09 20:12:26 · 850 阅读 · 0 评论 -
SpringBoot 整合 RabbitMQ 实现死信队列
相关知识什么是死信队列“死信”是RabbitMQ中的一种消息机制,当你在消费消息时,如果队列里的消息出现以下情况:消息被否定确认,使用 channel.basicNack 或 channel.basicReject ,并且此时requeue 属性被设置为false。消息在队列的存活时间超过设置的TTL时间。消息队列的消息数量已经超过最大队列长度。那么该消息将成为“死信”,“死信”消...原创 2020-01-09 18:14:33 · 1723 阅读 · 0 评论 -
SpringBoot 整合 RabbitMQ
相关知识交换器direct:一对一fanout:一对多topic:一对多匹配目标整合 Spring boot 提供的 spring-boot-starter-amqp,实现消息发送、消息消费、确认准备工作安装RabbitMQ介绍使用 Docker 方式安装,Docker 安装可以参考 https://blog.youkuaiyun.com/gongm24/article/details/...原创 2020-01-09 18:12:24 · 739 阅读 · 0 评论 -
SpringBoot 配置 Filter 实现 JSON 出入参打印
本章目标学会在 SpringBoot 项目中配置 Filter,实现对请求出入参的日志打印。操作步骤添加依赖引入 Spring Boot Starter 父工程<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starte...原创 2019-05-16 16:48:00 · 1849 阅读 · 0 评论 -
SpringBoot | 单元测试
SpringBoot整合Junit实现单元测试原创 2019-05-15 16:59:31 · 809 阅读 · 1 评论 -
SpringBoot 整合 MapStruct 优雅复制属性
在之前章节的例子中,我们在接收参数的时候都是使用的 User 类对象,这是一个 DO 对象,是用于与数据库进行交互的,而不是用于与前端业务进行交互的,所以需要创建一个 BO 业务对象用来与前端业务进行交互,保证数据隔离性及安全性。接收参数换成了 BO 对象,但数据入库使用的是 DO 对象,这中间就需要将 BO 对象的属性复制到 DO 对象,然后代码里就会出现大量的 do.set(bo.get()...原创 2019-11-29 16:26:13 · 1146 阅读 · 1 评论 -
SpringBoot 整合 Swagger2 自动生成API文档
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。相关知识Swagger官网:https://swagger.io常用注解:@Api 用于类,表示标识这个类是swagger的资源@ApiOperation 用于方法,表示一个http请求的操作@ApiParam 用于方法,参数,字段说明,表示对参数的添加元数据(说明或是否必填等...原创 2019-12-11 15:07:27 · 206 阅读 · 0 评论 -
SpringBoot 整合 Druid 实现应用监控
`Druid` 是 `Java` 语言中最好的数据库连接池。`Druid` 能够提供强大的监控和扩展功能。wiki:<https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98>原创 2018-04-09 20:45:32 · 1648 阅读 · 0 评论 -
SpringBoot 整合 SpringCache 缓存
@CacheConfig 在类上设置当前缓存的一些公共设置,比如缓存名称。@Cacheable 作用在方法上,表明该方法的结果可以缓存,如果缓存存在,则目标方法不会被调用,直接从缓存中获取,如果缓存不存在,则执行方法体,并将结果存入缓存。@CacheEvice 作用在方法上,删除缓存项或者清空缓存。@CachePut 作用在方法上,不管缓存是否存在,都会执行方法体,并将结果存入缓存。@Caching 作用在方法上,以上的注解如果需要同时注解多个,可以包在 @Caching 内原创 2018-01-03 02:51:43 · 708 阅读 · 0 评论 -
SpringBoot整合MybatisPlus支持枚举类型
SpringBoot 集成 MybatisPlus 系列SpringBoot 版本:2.6.4MybatisPlus 版本:3.5.1SpringBoot整合MybatisPlusSpringBoot整合MybatisPlus数据自动填充SpringBoot整合MybatisPlus实现逻辑删除SpringBoot整合MybatisPlus实现分页查询SpringBoot整合MybatisPlus支持枚举类型未完待续…在实际的项目开发中,通常会使用一些枚举,比如:是否、有无,这样原创 2022-03-12 11:24:58 · 2486 阅读 · 0 评论 -
SpringBoot整合MybatisPlus实现分页查询
SpringBoot 集成 MybatisPlus 系列SpringBoot 版本:2.6.4MybatisPlus 版本:3.5.1SpringBoot整合MybatisPlusSpringBoot整合MybatisPlus数据自动填充SpringBoot整合MybatisPlus实现逻辑删除SpringBoot整合MybatisPlus实现分页查询SpringBoot整合MybatisPlus支持枚举类型未完待续…分页查询是持久化框架的基础功能,Mybatis 本身也提供了分原创 2022-03-12 11:15:15 · 4137 阅读 · 0 评论 -
SpringBoot整合MybatisPlus数据自动填充
SpringBoot 集成 MybatisPlus 系列SpringBoot 版本:2.6.4MybatisPlus 版本:3.5.1SpringBoot整合MybatisPlusSpringBoot整合MybatisPlus数据自动填充SpringBoot整合MybatisPlus实现逻辑删除SpringBoot整合MybatisPlus实现分页查询SpringBoot整合MybatisPlus支持枚举类型未完待续…在真实的项目里,表结构中一般会存在一些公司内部约定的公共字段,原创 2022-03-12 11:10:31 · 1393 阅读 · 0 评论 -
SpringBoot整合MybatisPlus实现逻辑删除
SpringBoot 集成 MybatisPlus 系列SpringBoot 版本:2.6.4MybatisPlus 版本:3.5.1SpringBoot整合MybatisPlusSpringBoot整合MybatisPlus数据自动填充SpringBoot整合MybatisPlus实现逻辑删除SpringBoot整合MybatisPlus实现分页查询SpringBoot整合MybatisPlus支持枚举类型未完待续…向数据库删除一条记录通常会使用 DELETE 语句,其实在真实原创 2021-07-28 16:32:07 · 1475 阅读 · 0 评论 -
SpringBoot整合MybatisPlus
SpringBoot 集成 MybatisPlus 系列SpringBoot 版本:2.6.4MybatisPlus 版本:3.5.1SpringBoot整合MybatisPlusSpringBoot整合MybatisPlus数据自动填充SpringBoot整合MybatisPlus实现逻辑删除SpringBoot整合MybatisPlus实现分页查询SpringBoot整合MybatisPlus支持枚举类型未完待续…MybatisPlus 简介官网地址:https://ba原创 2019-12-13 14:53:23 · 673 阅读 · 0 评论 -
SpringBoot 整合 Mybatis
准备工作安装 Mysql初始化数据库整合 Mybatis添加依赖配置编码实现原创 2018-10-19 17:32:55 · 310 阅读 · 0 评论 -
SpringBoot 整合 JPA 实现增删查改功能
准备工作安装 Mysql初始化数据库整合 JPA添加依赖配置编码实现原创 2019-05-15 15:53:02 · 598 阅读 · 1 评论 -
SpringBoot 整合 ElasticJob
ElasticJob 是当当网开源的一个分布式调度解决方案,由两个相互独立的子项目 Elastic-Job-Lite 和 Elastic-Job-Cloud 组成。Elastic-Job-Lite 定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务;Elastic-Job-Cloud 采用自研 Mesos Framework 的解决方案,额外提供资源治理、应用分发以及进程隔离等功能。原创 2020-04-13 16:12:14 · 254 阅读 · 0 评论 -
SpringBoot 整合 AOP 实现面向切面编程
SpringBoot 整合 AOP 实现面向切面编程原创 2019-12-31 14:31:49 · 364 阅读 · 1 评论 -
SpringBoot 整合 hibernate-validator 优雅参数校验
SpringBoot 整合 hibernate-validator 实现参数校验原创 2019-11-25 17:03:14 · 465 阅读 · 0 评论 -
SpringBoot 整合 Lombok,让项目更简洁
SpringBoot整合Lombok原创 2018-01-03 01:33:59 · 493 阅读 · 0 评论 -
SpringBoot 配置定时任务
定时任务的几种实现方式:Timer:Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。Quartz:使用Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂。Spring Task:...原创 2020-03-27 11:43:29 · 195 阅读 · 0 评论 -
SpringBoot 基于 Redis 实现分布式锁
基于spring-boot-data-redis的分布式锁实现public class DistributedLock { private static final TimeUnit DEFAULT_UNIT = TimeUnit.SECONDS; private static final long DEFAULT_EXPIRE = 5L; private static...原创 2019-03-14 23:35:19 · 1226 阅读 · 0 评论