对于最新稳定版本,请使用 Spring Framework 7.0.6spring-doc.cadn.net.cn

@DynamicPropertySource

@DynamicPropertySource 是一个方法级别的注解,可用于注册动态属性,这些属性将被添加到为集成测试所加载的 PropertySourcesEnvironment 中的 ApplicationContext 集合里。当你事先不知道属性值时,动态属性非常有用——例如,当这些属性由外部资源管理时,比如由 Testcontainers 项目所管理的容器。spring-doc.cadn.net.cn

以下示例演示了如何注册一个动态属性:spring-doc.cadn.net.cn

@ContextConfiguration
class MyIntegrationTests {

	static MyExternalServer server = // ...

	@DynamicPropertySource (1)
	static void dynamicProperties(DynamicPropertyRegistry registry) { (2)
		registry.add("server.port", server::getPort); (3)
	}

	// tests ...
}
1 使用 static 注解一个 @DynamicPropertySource 方法。
2 接受一个 DynamicPropertyRegistry 作为参数。
3 注册一个动态的 server.port 属性,以便从服务器中延迟获取。
@ContextConfiguration
class MyIntegrationTests {

	companion object {

		@JvmStatic
		val server: MyExternalServer = // ...

		@DynamicPropertySource (1)
		@JvmStatic
		fun dynamicProperties(registry: DynamicPropertyRegistry) { (2)
			registry.add("server.port", server::getPort) (3)
		}
	}

	// tests ...
}
1 使用 static 注解一个 @DynamicPropertySource 方法。
2 接受一个 DynamicPropertyRegistry 作为参数。
3 注册一个动态的 server.port 属性,以便从服务器中延迟获取。