- 博客(108)
- 资源 (2)
- 收藏
- 关注
原创 Spring 多数据源配置详解
稍复杂点的项目,由于各种原因可能会使用到多个数据库实例,这些数据库可能属于不同的业务模块,可能用于分库分表,也可能用于读写分离。使用多个数据库的情况下需要为每个数据库配置一个数据源,这本身并没有什么技术难度,重点在于如何在使用多数据源的情况下还能加入 Spring 的事务管理,这篇文章会详细介绍各种持久化技术如何在 Spring 中达到这个目标。......
2022-08-15 08:42:39
6867
17
原创 Spring 加强版 ORM 框架 spring-data-jpa 入门与实践
伴随着 Java 诞生与发展,目前 Java 界涌现出了五花八门的数据访问技术,有一些名词甚至达到了耳熟能详的程度,包括 JDBC、JTA、JPA、ORM、MyBatis 等等,这篇介绍的是 Spring Data 项目中的 spring-data-jpa 框架,了解其他相关技术可以查阅我前面的文章。......
2022-08-12 08:42:25
2904
22
原创 Spring 项目快速整合 JPA
JDBC、JTA、JPA 都是 Java 与数据库打交道的标准,由于这些规范分别定义了不同的事务接口,Spring 对这些规范进行了整合,提供了统一的事务 API。Spring 的事务管理需要对这些标准做一些适配操作,才能转换为同一的接口,这篇就来谈谈如何在 Spring 中整合 JPA。......
2022-07-26 09:32:36
2277
13
原创 Spring 项目快速整合 Hibernate
Hibernate 作为前些年广为流行的 ORM 框架,Spring 在诞生之初也进行了支持,并且抽象出一个 spring-orm 模块。这篇希望用简短的内容介绍如何在 Spring 项目中整合 Hibernate。
2022-07-20 15:07:51
2761
原创 Java ORM 规范 JPA 入门
JPA 全称 Java Persistence API,与 JDBC 规范类似,同样是 Java EE 规范的一部分,它定义了一套用面向对象的方式操作关系型数据库的接口,它只是一个 ORM 框架的规范,常见的实现包括 Hibernate、TopLink。......
2022-07-18 17:01:00
2372
原创 认识 ORM 框架 Hibernate,为什么 2022 年了还在谈论它?
Hibernate 作为一种全自动 ORM 框架,在几年前常与 Spring、Struts2 一起使用。伴随着 MyBatis 的诞生,以及 Hibernate 本身的一些缺陷,如今 Hibernate 已经慢慢淡出了大家的视野。有时我们还会将其与 MyBatis 做一些对比,不过由于很多同学没有使用过它,可能查阅一些资料后还是云里雾里的,因此有必要对 Hibernate 有一个入门级的认识。.........
2022-07-12 08:55:52
829
原创 Spring Boot 项目优雅实现 Excel 导入与导出功能
Excel 导入与导出是项目中经常用到的功能,在 Java 中常用 poi 实现 Excel 的导入与导出。阿里基于 poi 开源了 EasyExcel 项目,解决了 poi 的内存占用问题,简化了 API。不过 EasyExcel 并非完美,如果项目中的 Excel 导入与导出功能比较多,会产生大量的样板式代码,使用体验类似于 JDBC。另外,导入往往还伴随着校验,这是 EasyExcel 没有支持的功能。那么在 Spring Boot 项目中如何解决这些问题呢?这篇将给出答案。......
2022-06-07 15:53:19
2986
22
原创 我的创作纪念日
前言今天收到 CSDN 2 周年创作的提醒,可能是近期上线的功能,不得不说,CSDN 近些年来的变化还是挺大的,一直在迭代更新,也是目前国内最大的博客创作平台。借着这个机会再唠叨几句。机缘与大部分人一样,我也是通过百度搜索技术问题第一次接触 CSDN(SEO 做的真棒👍🏻),具体时间已经记不清了,不过通过 CSDN 的记录可以找到 CSDN 的注册时间是 2016 年 4 月 18 日。当时国内的技术氛围还没现在这么浓厚,网上的资料比现在要少了很多,官方资料多为英文,最重要的是也没现在卷,5 年前
2022-05-30 12:17:01
288
2
原创 Spring 加强版 ORM 框架 spring-data-jdbc 入门与实践
前言Spring 为了支持以统一的方式访问不同类型的数据库,提供了一个 Spring Data 框架,这个框架根据不同的数据库访问技术划分了不同的模块。上篇 《Spring 加强版 ORM 框架 Spring Data 入门》 介绍了不同模块遵循的通用规范,这篇我们来介绍下基于 JDBC 技术实现的 spring-data-jdbc 模块。一、入门基本的概念这里就不多说了,如果你在本篇遇到不明白的地方可以移步上一篇文章查看相关内容。Spring Boot 内置了对 spring-data-jdbc
2022-05-24 19:32:09
2150
22
原创 Spring 加强版 ORM 框架 Spring Data 入门
Spring 中有多种操作数据库的方式,通常来说我们优先选择的是 MyBatis,如果业务比较简单我们还会使用 JdbcTemplate,另外据说国外使用 spring-data-jpa 比较多?最近发现了 Spring 中另一款操作关系型数据库的框架,相对 JdbcTemplate 来说使用上又简化了一些。由于 Spring Data 内容较多,分为上下两篇介绍,本篇我们先介绍一些 Spring Data 的基础知识,下篇再介绍 spring-data-jdbc。...
2022-05-23 12:19:38
984
28
原创 Spring JdbcTemplate 快速上手
数据访问作为 Spring Framework 的特性之一,提供了事务、DAO 支持、JDBC、O/R 映射等能力。针对关系型数据库的访问,Spring 提供了一个 spring-jdbc 模块,JdbcTemplate 是这个模块的核心类,封装了复杂的 JDBC 操作。日常开发中,如果不想引入第三方 ORM 框架或者业务比较简单,可以将 JdbcTemplate 作为首选。...
2022-05-19 09:12:54
1006
36
原创 Spring 事务设计与实现
很多人都知道 Spring 包含声明式与编程式两种事务管理方式,通常来说这已经足够日常使用 Spring 事务了。然而,要掌握一门技术,我们还要关心这门技术出现的背景,解决了什么问题,Spring 的事务设计也有其历史原因。最近回顾 Spring 事务相关知识,发现它的设计还是包含不少内容的,分享给大家,也便于大家更容易理解与掌握 Spring 事务。...
2022-05-15 21:47:10
1657
29
原创 Java 分布式事务规范 JTA 从入门到精通
最近回顾 Spring 事务相关的设计与实现,发现 Spring 事务设计的最初目的是为了统一 Java 中 JDBC、JTA 与 JPA 事务的使用方式,并且其实现参考了 JTA 规范。网上 JTA 的相关文章,要么参照规范照本宣科的把原理简单介绍,要么就直接上 Spring Boot 整合 JTA 框架的代码,由于知识跨度比较大,增加了对 JTA 理解的难度。经过几天的不懈努力,查阅相关资料,我也对 JTA 有了一定的理解,这里将知识结构以循序渐进的方式进行介绍,也避免小伙伴们多走弯路。...
2022-05-12 22:46:18
8388
1
原创 Spring 核心特性之表达式(SpEL)
Spring Framework 主要有 9 个核心特性,包括 IoC 容器、事件、资源、国际化、校验、数据绑定、类型转换、表达式以及 AOP。可以说,表达式是最没有存在感的核心特性了,用户直接使用的场景实在太少,这也是我一直没有提及它的原因。不过项目中确实有使用到它的地方,恰好最近整理 Spring 核心特性,为了知识结构完整性姑且总结一篇。
2022-05-04 22:51:12
4397
原创 一文看懂 Spring IoC 核心特性
过去3年的时间我已经写了从 Spring IoC 到 Spring Boot 60 篇的文章,不过过去的文章多是介绍一些实现原理。恰逢最近在部门内部做分享,借着这次机会对 Spring IoC 部分又进行了系统的整理,由于大家专业方向和水平不完全一致,因此更多的是让大家了解 Spring 这门技术,分享的内容也站在了更高的角度,希望达到鸟瞰全貌的目的。
2022-05-01 22:49:15
506
2
原创 从 Spring 开始,三年时间,说说我与 CSDN 的故事
按照近期的更新计划,本应该是一周更新两篇的,不过最近在准备部门内部的分享,本人呢,又不擅长做 PPT,结果就导致花了很久的时间。PPT 更擅长表达观点,而博客则不必关心那些花里胡哨的东西,直接把内容做好就行了。这篇内容自然就是选自我分享中的一段小插曲,先讲一下我与 CSDN 的一些故事。
2022-05-01 16:43:04
729
2
原创 Spring Boot 自动装配:创建自己的 spring-boot-starter
自动装配常与 spring-boot-starter 结合到一起,当为公司开发内部使用的通用框架,或者做开源项目时,经常会自定义 spring-boot-starter。
2022-04-24 22:41:08
1333
原创 面试官:谈谈你对 Spring Boot 自动装配机制的理解
自动装配作为 Spring Boot 最核心的特性,它的起源可以追溯到 Spring Boot 的诞生背景,同时它也是面试常问的一个考点,这篇文章将带着大家对其全面掌握。
2022-04-21 19:17:54
4635
6
原创 @SpringBootApplication 漫谈,理解 Spring 注解驱动编程
几乎所有的 Spring Boot 应用都会在启动类上添加 @SpringBootApplication,可以说它是 Spring Boot 应用最核心的注解。Spring Boot 基于 Spring Framework,@SpringBootApplication 也不例外,Spring 注解核心知识在《重学 Spring》专栏实际上已经写了多篇了,这篇希望在理解 @SpringBootApplication 的基础上将前面的内容进行串联,以便达到融会贯通的效果。
2022-04-15 18:32:55
1799
6
原创 Spring Boot 开发环境热部署(HotSwap)详解
Spring Boot 提出了多项开箱即用的功能特性,但归根到底还是围绕简化应用的创建、开发、运行。开发环境下我们经常对项目代码进行变动,如果每次都重新启动应用则会消耗大量的时间,为此就产生了多种进行热部署的方案,可以在不重启的情况下使用新的代码。
2022-04-12 00:31:13
7966
2
原创 Spring Boot 可执行 Jar 背后的秘密
按照 Spring Boot 应用的运行环境可以将其运行方式大概分为两类,开发环境下可以通过在 IDE 中直接运行 main 方法或通过 mvn spring-boot:run 运行,生产环境可以部署到 Tomcat 或通过 java -jar 的方式运行,这篇我们来尝试了解 java -jar 背后的秘密。
2022-04-01 21:13:57
1029
2
原创 mvn spring-boot:run 是怎样运行 Spring Boot 项目的?
Spring Boot 项目提供了多种运行应用的方式,今天我们要聊的是 mvn spring-boot:run 命令运行 Spring Boot 项目的原理,通过这篇文章你能学到的是 maven 插件基本内容以及 Spring Boot 对 maven 插件的应用。
2022-03-29 23:12:43
12587
2
原创 Spring Boot 第三篇:理解 spring-boot-starter-parent
基于 maven 的 Spring Boot 项目,我们通常会指定 spring-boot-starter-parent 作为当前项目 pom 的 parent,大多数人都知道这可以用于依赖管理,以便引入依赖时可以省略版本号,这篇我们聊点不一样的。
2022-03-25 16:57:47
47957
9
原创 Spring Boot 项目快速创建的 3 种方式
这篇来点轻松的话题,谈谈 Spring Boot 项目快速创建的 3 种方式,这是开发 Spring Boot 项目的第一步。
2022-03-22 16:31:28
2696
原创 5 分钟快速理解 Spring Boot
Spring Boot 是为了进一步简化 Spring 开发提出的一个框架,很多特性都基于 Spring Framework,目前新入门的同学应该已经直接跳过 Spring Framework 直接使用 Spring Boot 了,这也说明了 Spring Boot 的火热程度。如果一定要为它下一个定义的话,那么 Spring Boot 可以被理解为是一个用来简化 Spring 应用创建、开发和运行的框架。
2022-03-20 14:31:43
4381
2
原创 Spring HTTP 客户端神器 RestTemplate 详解
目前 Spring MVC 基本上已经成为了 Java Web 开发的首选框架,而 Web 开发除了要提供接口供客户端调用,我们的服务还经常作为其他服务的客户端。RestTemplate 作为 Spring 内置的 Http 客户端,由于和 Spring 框架整合程度较高,并且设计优秀,成为 Spring 开发首推的 HTTP 客户端。
2022-03-02 15:39:30
1589
原创 Spring MVC 实战:响应字段默认值设置
前后端分离中一般会使用 json 作为前后端的数据交换格式。由于 json 可以转换为 JavaScript 对象,取对象的字段时需要保证对象不能为 null,因此前端同学通常期望后端接口返回对象或数组类型的字段时设置一个默认值。如果每个接口单独设置默认值将会异常繁琐,我们尝试来进行一个全局性的处理。
2022-02-17 16:07:37
1759
原创 Spring MVC @RequestBody @ResponseBody 序列化反序列化实现
Spring MVC 中,标注了 @RequestBody 注解的 Controller 方法参数可以用来接收请求体,标注了 @ResponseBody 注解的 Controller 方法则会将返回值作为响应体。本篇尝试分析 Spring MVC 如何将请求体反序列化为 Controller 方法参数,以及如何将 Controller 方法返回值序列化为响应体。
2022-02-15 15:31:37
5195
原创 Spring MVC Controller 方法参数 Map 的实现类是什么?
这是我回答的来自 CSDN 问答平台的一个问题,由于问题相对比较有深度,恰好最近几篇文章都是在总结 controller 方法参数,因此在原回答的基础上再次整理归纳。
2022-02-14 10:22:52
1754
原创 Spring MVC 实战:复杂类型接收表单字段
Spring MVC 中,我们通常使用简单类型接收单个表单字段就足够了,然而在复杂的场景下,简单类型可能无法满足我们的需求。对于 `application/json` 类型的请求,我们可以定义任意复杂的类型来接收 json 格式的请求体,那么对于 form 类型的请求又该如何处理呢?这篇我们来尝试使用复杂的成员变量类型来接收 form 表单字段。
2022-02-08 16:39:02
909
1
原创 Spring MVC 实战:三种方式获取登录用户信息
Spring MVC 项目中,通常用 HandlerInterceptor 替代 Filter 拦截请求获取用户信息并存至 ThreadLocal 供业务层获取。我们知道 Spring MVC 支持直接注入 HttpServletRequest 和不同的处理器方法参数,那么能不能注入表示用户信息的类型以及将这个用户类作为处理器方法参数呢?如果能够实现这个功能,我们获取用户信息的方式将进一步简化和灵活。本篇将尝试实现这两个功能。
2022-02-07 09:14:01
6965
6
原创 深入理解 Spring MVC Controller —— 请求参数获取
Spring MVC 中对请求进行处理,除了定义处理器方法以及请求映射,我们还需要关心的一个问题是如何接收请求有关的参数,因为不同的参数往往伴随着不同的业务逻辑。由于请求参数获取的内容较多,这篇我们先来了解 Spring MVC 常见的参数获取方式,下篇我们再深入分析并实战如何利用请求参数优雅获取登录用户信息。
2022-01-27 15:42:05
3370
1
原创 深入理解 Spring MVC Controller —— 请求映射
基于注解的 Spring MVC 的项目中,Controller 应该是我们接触最多的类了,这里提到的 Controller 并非是某一个具体的接口或类,而是一种概念,只要我们我们定义的类中包含了处理请求的方法,这个类就可以称为 Controller,而处理请求的方法被称为处理器方法。由于 Controller 的内容较多,因此我打算将它拆成几块做讲解,相信看完这几篇文章之后,你会对 Controller 有更深入的认识,本篇要介绍的主要是 Controller 的定义及请求映射部分。
2021-12-27 18:44:40
2004
2
原创 Spring MVC request 获取方式大总结
Spring MVC 项目,我们通常会使用 Spring 提供的注解获取参数,如 @RequestParam、@RequestHeader。不过在某些场景下,我们可能还是想获取 HttpServletRequest 对象。这篇我们来学习如何在 Spring MVC 环境下获取 HttpServletRequest,以及它们的实现方式,以做到知其所以然。...
2021-12-16 21:09:37
6143
1
原创 【Spring MVC 系列】静态资源处理
前后端分离的今天,Java Web 应用中直接使用静态资源的方式已经很少见了,但不可避免有时候还会用到,例如接口文档 Swagger 就直接将前端代码嵌入了 Java Web 应用中。Spring MVC 原生支持静态资源,这篇我们主要学习 Spring MVC 静态资源处理的设计思路,以及如何在 Spring MVC 中进行静态资源配置。
2021-12-14 15:11:43
4168
2
原创 别用 Filter 了,试试 Spring 自带的方式处理 CORS 跨域问题
跨源资源共享(CORS) 也常被译为跨域资源共享。作为 W3C 的标准,它允许浏览器向跨源服务器发起请求,克服了 AJAX 只能同源使用的限制。CORS 需要浏览器和服务器同时支持,浏览器发起跨域请求时会自动携带一些请求头,服务器如果允许跨域,也会自动添加一些响应头。作为运行在服务端的 Spring MVC 也对 CORS 提供了支持,并提供了多种解决方案。
2021-12-02 19:45:07
5159
原创 【Spring MVC 系列】接口性能优化,还可以试试异步处理
对于每个请求,Servlet 容器通常会使用线程池中的一个线程来处理,如果多个线程因数据库查询或等待远程 Web 资源被阻塞,线程池中的线程占满后将无法处理其他请求,为了避免这种情况, Servlet 3.0 提出了异步处理支持,将阻塞的任务放到非容器的线程池中,待任务结束再交由容器向客户端响应,Spring 结合自身特性进行封装,使异步处理更为简便。
2021-11-26 17:50:13
1611
原创 【Spring MVC 系列】异常处理,为你的应用加层防护
异常处理是几乎所有编程语言都具有的特性。为了将异常处理与 Web 环境整合到一起,Servlet 规范也定义了一系列异常处理的内容。Spring MVC 在 Servlet 规范的基础上更上一层,结合自身特性又添加了自己全局异常处理的能力。这篇将对 Spring MVC 异常处理详细介绍。
2021-11-19 09:46:44
346
原创 【Spring MVC 系列】Spring MVC 中 Filter 配置的 6 种方式,看看你了解哪些
过滤器 Filter 在 Servlet 2.3 版本中被首次提出,它不仅可以过滤请求,还可以过滤响应,当请求到达 Servlet 容器,会先经过 Filter ,然后再交给 Servlet。自从 Spring MVC 提供拦截器 HandlerInterceptor 之后,过滤器 Filter 的一部分功能已经可以搬到拦截器了,但有时还是会不可避免的使用到过滤器,如跨域处理。Spring MVC 在不同的阶段也提供了不同的配置方案,具体来说主要有 6 种。...
2021-11-15 17:37:50
11038
原创 Spring MVC 系列之拦截器 Interceptor 最全总结
拦截器 Interceptor 在 Spring MVC 中的地位等同于 Servlet 规范中的过滤器 Filter,拦截的是处理器的执行,由于是全局行为,因此常用于做一些通用的功能,如请求日志打印、权限控制等。
2021-11-11 10:29:59
18615
2
Java JTA Atomikos 官网文档
2022-05-12
Java Transaction API (JTA) Version 1.3 JSR-907
2022-05-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人