SPRING 一月 26, 2025

Spring Test 模块中的上下文缓存特性

文章字数 8.7k 阅读约需 8 mins.

Context CachingSpring Framework 中的 Spring TestContext Framework 所提供的 Context Management 上下文管理能力对测...

查看全文

SPRING 十一月 10, 2024

【译】Spring Boot 配置绑定

文章字数 13k 阅读约需 12 mins.

本页面的目的是详细描述配置项如何绑定到实际对象。它主要面向 IDE 开发人员,但任何对了解绑定工作原理感兴趣的人都可以在本文档中找到有价值的资源。

注意:IDE 对配置绑定的辅助特性在 单独的文档 中描述。

无论外部配置文件格式如何,整个 Environment 归结为一组概念上层次结构化的键。让我们看一个例...

查看全文

SPRING 十月 27, 2024

【译】Spring Boot 2.0 中的属性绑定

文章字数 8.1k 阅读约需 7 mins.

自 Spring Boot 的第一个版本发布以来,就可以使用 @ConfigurationProperties 注解将属性绑定到类。还可以用不同的形式指定属性名称。例如,person.first-nameperson.firstNamePERSON_FIRSTNAME 都可以互换使用。我们称这个功能为“宽松绑定”(relaxed binding)。

不幸的是,在 Spring...

查看全文

JAVA 四月 17, 2022

写测试用例都这么简单了,你不来试试?

文章字数 14k 阅读约需 13 mins.

提到测试,所有人都知道它的重要性,但大部分开发人员都会觉得测试应该交给测试人员来做,或者直接到环境上执行一下、点一点看看没有问题就可以了。

究其原因,个人觉得是因为写单元测试的成本太高了,尤其是对外部环境依赖较多的项目,开发环境想运行起来都要依赖特定的组件,就更别提测试用例的运行了。

一个好的测试用例,应该是自动化的、可重复执行的,容易理解、容易运行的,且有明确的断言,以便在代码出现不符合预期的结果时,能够快速发现且定位到问题的。

本文以一些面向 Java 和 Spring 的常见测试场景为例,...

查看全文

JAVA 二月 13, 2022

覆盖 MyBatis Mapper 文件

文章字数 14k 阅读约需 12 mins.

通过 -Xbootclasspath/a 参数修改 Spring Boot 应用行为实例 的 场景2 中,我们通过 -Xbootclasspath/a 参数,对 Spring Boot 应用 JAR 包中的 Mapper 文件进行了覆盖,但美中不足的是需要将未修改的 Mapper 文件也重新附加进去。

本文将演示两种仅需将改动的 Mapper 文件覆盖进去的方式。

先让我们看一下,在使用 MyBatis 时,如果仅将修改了的 Mapper 文件(即非全部 Mapper 文件)添加到 bootclasspath...

查看全文

JAVA 一月 23, 2022

通过 -Xbootclasspath/a 参数修改 Spring Boot 应用行为实例

文章字数 3.9k 阅读约需 4 mins.

Spring boot 应用不重新打包,添加新类 中简单介绍了 -Xbootclasspath/a 参数的用法,下面用两个实例来进行实际使用场景的说明。

bootclasspath 为本文使用的演示项目,可通过 mvn clean package -DskipTests 命令获得 Spring Boot 应用 JAR 包,并在项目根路径通过 java -jar app/target/app-0.0.1-SNAPSHOT.jar 命令启动应用,之后可访问 http://localhost:8080...

查看全文

SPRING 一月 09, 2022

Spring boot 应用不重新打包,添加新类

文章字数 2.8k 阅读约需 3 mins.

因为某些约束,我们可能不希望对 Spring Boot 应用重新打包,却又需要调整其中的某些行为(如:添加新类),有没有办法?

1. PropertiesLauncher

修改启动命令,不再是使用 java -jar 方式启动,而是使用传统的 Java 应用启动方式,先通过 -cp 参数将 Fat Jar (example.jar)加入 classpath,然后指定运行的主类 PropertiesLauncher,并且通过 -D 参数,将系统属性传入主类中。

$ java -cp example....
查看全文

JAVA 八月 08, 2021

Flyway 实战

文章字数 7.8k 阅读约需 7 mins.

Using Liquibase with Gradle in Spring Project 中,介绍了数据库版本控制工具 Liquibase,并且总结到

面向 SQL,选择 Flyway

不面向 SQL,选择 Liquibase

如果你还在单独分发数据库变动脚本,甚至简单粗暴的将开发库直接导出并导入生产环境,建议一起来了解一下 Flyway 的用法。

Flyway 中的概念可查阅 官方文档,这里挑选一些重要的进行简单介绍。

Schema History Table

Flyway 对数据库进行版...

查看全文

SPRING 六月 27, 2021

玩转 @ConditionalOnMissingBean

文章字数 7k 阅读约需 6 mins.

男人,不能说不行! 中,留了两个问题:

  1. 为什么名为 testServiceImpl 的 Bean 会被注册?
  2. 为什么无法注入 TestService 的实例?

先从可运行环境 https://github.com/AlphaHinex/conditional-on-missing-bean-demo 看下结果。

在测试用例中,通过 @Autowired 注解注入了 TestService,但调用时,报了空指针异常,说明容器中没有 TestService 类型的实例。

那么是 @ConditionalOnMi...

查看全文

SPRING 六月 20, 2021

男人,不能说不行!

文章字数 1.4k 阅读约需 1 mins.

在这个特别的日子里,我第一个想到的,是 李健 在 我是歌手 中演唱的《父亲写的散文诗》,又让我想起了参加我是歌手的每一位歌手,对待自己所热爱的事业的坚持和执着。

歌手,是一个职业,但每一个好的歌手,都不会仅仅把它当做一个职业。

拥有坚定的信念时,一切阻碍都能想办法克服;否则,任何理由都可以成为失败的借口。

就像父亲为了孩子,会竭尽全力一样。

借此机会,致敬每一位为了信念,不轻言放弃,拼命坚持的人!

Spring Boot 提供了一系列 @ConditionalOnXXXX 注解,用来在满足或不满...

查看全文
加载更多
0%