我正在为启用spring-data jpa的应用程序设置SpringBootTest。我们正在尝试使用Redis/Reddison设置二级缓存,hibernate被配置为在其属性中使用RedisRegionFactory。
在我们的集成测试中,我们希望使用我们在TestConfiguration类中配置的RedisServer bean来启动本地Redis实例。当测试启动时,由于Hibernbate首先启动,RedisRegionFactory实例由于RedisServer尚未启动而运行到死IP连接,因此测试失败,并出现bean创建异常。
我们尝试了一些技巧来首先加载TestConfiguration类及其bean,比如添加@Order注释。但在调试中,我们发现在hibernate启动之前,配置bean没有被触碰。我们并不想在这里重新定义自动配置的bean,有没有其他方法可以强制SpringBootTest在JPA之前加载bean?
我看不出有什么方法可以做到这一点,而不接触Spring Boot当前自动配置的任何东西。
您可以手动配置失败的bean,并添加额外的依赖项,例如,如果Redis可用,则使用@DependsOn
对进行构造检查的bean进行配置,因此bean的构造仅在之后继续。