聊一聊 Spring Data JPA 中的那些日常实践

一直以来,团队在使用 ORM 框架上都是比较随意的,一开始是鼓励大家使用 mybatis,主要是期望团队同学可以自
己写写 SQL,不至于写 SQL 手生;但是从实际工作中来看,我们并不会涉及到很多非常复杂的 SQL 语句,这就导致
了大家会消耗相当部分的精力在写一些重复性并且没有什么技术难度的 SQL,对于基于数据库驱动的业务来说,当业务
涉及到的表结构越多时,这种问题就越突出。于是我在项目的脚手架中就提供了 mybatis 和 jpa 两种访问数据库的
方式,但是在随后的一段时间中发现,团队在使用 jpa 来操作数据库上的代码提交几乎为0,而有相当部分的同学则
是引入了 mybatis-plus。

阅读更多

你知道 @Async 是怎么让方法异步执行的吗?

在阅读本文之前,你可以通过 Creating Asynchronous Methods 指导来体验下创建异步方法的使用方式。

为什么要写这篇文章,本质上对于这些 Spring 已经封装好的能力,并不需要去关注它底层到底是怎么玩的,比如 @Async,你肯定可以猜到对于打了这个注解的方法(或者类),在执行这个方法(或者类下所有方法)时,Spring 框架会将当前方法丢进到一个单独的线程池中去执行,以达到方法异步执行的目的。

阅读更多

SpringBoot 实践系列-Filter 中的异常处理和 Controller 中的异常处理

本篇主要是记录如何使用 SpringBoot 所提供的 ErrorController 这个接口能力;其内置了一个 BasicErrorController 对异常进行统一的处理,当在 Controller 发生异常的时候会自动把请求 forward 到 /error 这个请求 path 下(/error 是 SpringBoot 提供的一个默认的mapping)。BasicErrorController 提供两种返回错误:1、页面返回;2、json 返回。

阅读更多

SpringBoot 源码系列-自动配置及 starter 机制解析

一家之言,如有任何错误,请批评指出,不胜感激

本篇主要来讨论研究两个问题:1、什么自动配置,2、如何编写自动配置

在使用 Spring 作为项目开发框架的过程中,当需要集成某个组件时,通常需要大量的 xml 配置才可以让项目工程 run 起来,下面先以 mybatis 为例,来看下如何使用 mybatis-Spring 模块,需要哪些必不可少的依赖和配置。

阅读更多

SpringBoot 源码系列-配置解析

注:本文基于 SpringBoot 2.1.11 版本

说到配置,你能想到的是什么?

在日常的开发和运维过程中,可以说配置都是及其重要的,因为它可能影响到应用的正常启动或者正常运行。相信在之前 Spring xml 时代,很多人都会被一堆 xml 配置折腾的够呛,除此之外,还有像数据库连接配置、缓存配置、注册中心配置、消息配置等等,这些相信大家都不会陌生。

配置对于开发人员或者运维人员来说可以比喻成一把”钥匙“,可以通过这把”钥匙“让我们的程序 run 起来,可以通过这把 ”钥匙“ 开启或者关闭应用程序的某一个功能。那么为什么会需要配置,对于一个应用来说,配置的意义又是什么呢?

阅读更多