SpringBoot @Value 解析集合配置

一、前言

在日常开发中,经常会遇到需要在配置文件中,存储 List 或是 Map 这种类型的数据。Spring 原生是支持这种数据类型的,以配置 List 类型为例,对于 .yaml 文件配置如下:

test:
  list:
    - aaa
    - bbb
    - ccc

详解 Spring 定时任务的调度方式

在 Spring 中,我们可以使用 @Scheduled 方便的进行定时任务的执行,其支持以下三种调度方式:Cron、FixedDelay、FixedRate。下面分别介绍在标准模式下和异步模式下这三种调度方式的不同。

SpringBoot 普通 jar 与可执行 jar

前两天被人问到这样一个问题:

“为什么我的 Spring Boot 项目打包成的 jar ,被其他项目依赖之后,总是报找不到类的错误?”

大伙有这样的疑问,就是因为还没搞清楚可执行 jar 和普通 jar 到底有什么区别?今天就和大家来聊一聊这个问题。

Maven filter 实现 SpringBoot 多环境配置

一、前言

当我们正式开始工作生涯后,最先发现商业项目和我们自己写的项目的不同之一就是:怎么这么多配置文件啊!!

就按照最普遍的:开发、测试、预发(仿真)和线上来说,一个项目就至少有四套配置了,那么我们到底要如何配置多环境呢?

SpringBoot 条件注解

一、引言

当我们使用 SpringBoot 进行开发时,会引入许多的 starter 包,引入后就会为我们做一些自动化配置,省去了大量配置的时间,快速开发。

以 Redis 为例,当我们引入 Redis 的 starter 包时:

JTA 深度历险 - 原理与实现

一、利用 JTA 处理事务

1.1 什么是事务处理

事务是计算机应用中不可或缺的组件模型,它保证了用户操作的原子性 ( Atomicity )、一致性 ( Consistency )、隔离性 ( Isolation ) 和持久性 ( Durabilily )。

关于事务最经典的示例莫过于信用卡转账:将用户 A 账户中的 500 元人民币转移到用户 B 的账户中,其操作流程如下:

详解 Spring 声明式事务

一、引言

Spring的事务机制包括声明式事务编程式事务

  • 编程式事务管理:Spring推荐使用 TransactionTemplate,实际开发中使用声明式事务较多。

  • 声明式事务管理:将我们从复杂的事务处理中解脱出来,获取连接,关闭连接、事务提交、回滚、异常处理等这些操作都不用我们处理了,Spring都会帮我们处理。

    声明式事务管理使用了 AOP 实现的,本质就是在目标方法执行前后进行拦截。在目标方法执行前加入或创建一个事务,在执行方法执行后,根据实际情况选择提交或是回滚事务。

声明式事务优点:不需要在业务逻辑代码中编写事务相关代码,只需要在配置文件配置或使用注解(@Transaction),这种方式没有侵入性。

声明式事务缺点:声明式事务的最细粒度作用于方法上,如果像代码块也有事务需求,只能变通下,将代码块变为方法。

事务属性包含以下五个方面:隔离级别传播行为回滚规则事务超时只读

SpringBoot 远程调试

在配合 QA 进行代码测试,以及处理线上 BUG 时,代码往往已经被部署于服务器端,因此服务器端程序支持远程调试功能就尤为重要。

Java 原生支持调试功能,由于实际开发中使用 SpringBoot,因此本文探讨基于 jar 包的调试,远程调试的 IDE 为 IDEA

注: war 包调试、Eclipse 远程调试功能请另行了解,这不在本文的探讨范围内。